简单的答案是拥有一个包含所有常规操作的接口,其中还包括一个 stop() 方法。
interface Service {
operation( parameters ...);
somethingElse( parameters ... );
stop();
}
stop 方法的主要问题是大多数获得服务引用的客户端可能也不应该能够停止服务。
另一种选择是简单地定义两个接口,服务和可停止
interface Service {
operation( parameters ...);
somethingElse( parameters ... );
}
interface Stoppable {
void stop();
}
这种方法的唯一问题是,如果实现被另一个 Service 包装,那么 stop 方法就会被隐藏起来。
阻止客户端“停止”您的服务的原始问题仍然存在,他们只需要首先检查引用是否是 Stoppable 的实例,然后他们可以“停止”它。
你将如何解决这个问题?
我有一个想法可以优雅地解决问题(对我来说很好),而不会留下公共站点。但是在我展示它之前,我想要一些想法。