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