设计模式 - 多个观察者

时间:2014-03-26 21:20:22

标签: java design-patterns observer-pattern

我是设计模式的新手。我正在编写一段代码,其中有一个主题和多个观察者。主题和观察者都有接口。所以说如果我有5个观察者,我是否需要使用各自的更新方法创建5个不同的接口?或者我应该只创建一个接口并为所有观察者编写五种更新方法吗?

3 个答案:

答案 0 :(得分:4)

通常,您只需要一个所有5个观察者类都可以实现的观察者接口。不同之处将是观察员如何对变化通知作出反应。这是否适用于您将完全取决于您的计划结构和需求。

请注意,共享单个接口的观察者也可以侦听观察到的不同更改,但仍然使用相同的接口。例如,如果您使用PropertyChangeListener作为观察者接口,则可以通过检查传递给观察者的PropertyChangeEvent中返回的propertyName来确定您所监听的内容。

但是请注意,如果观察者正在收听的内容非常不同,那么他们可能需要一个独特的界面。使用Swing示例,因为这是我最了解的内容,有许多不同的侦听器类和接口可用,包括ActionListener,MouseListener,MouseMotionListener,......所有这些都来自公共超级接口EventListener。请注意,所有参数都传递给基于公共超类AWTEvent类的侦听器。

如需更具体的帮助,请考虑向我们提供有关您问题的更多细节。

答案 1 :(得分:1)

  

我是否需要使用单独的更新方法创建5个不同的界面?或者我应该创建一个接口并为所有观察者编写五种更新方法?

一个具有五种更新方法的界面似乎比五种不同的界面更具凝聚力。但是,您说您只有一种主题(对观察者来说是客户端)。但这取决于这个客户的凝聚力。

interface segregation principle可能适用于帮助您做出决定。如果您提供更多详细信息,我可以提供更多意见。

答案 2 :(得分:0)

如果您使用的是Java EE,我建议您使用JMS使用主题和订阅者......它更强大。我不知道您正在寻找什么样的解决方案,但如果您需要坚持并防止丢失数据,它会更强大...

如果你需要什么,请不要犹豫。

相关问题