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