设计模式 - 向特定观察者发送通知

时间:2013-08-17 01:49:25

标签: java design-patterns observer-pattern

在我的应用程序中,有许多观察者和一个主题,但我想向特定观察者发送有关变量变化的通知。

我感到很困惑,我也在互联网上搜索过它..但是没有太多。

如果早些时候被问过,我很抱歉......现在我找不到一些简明的答案。

3 个答案:

答案 0 :(得分:5)

  

在我的应用程序中,有许多观察者和一个主题,但我想向特定观察者发送有关变量变化的通知。

这对我来说似乎不是一个合理的计划,因为这个设计模式的关键租户和允许更松散耦合的原因之一是被观察者不应该对观察者有任何了解。相反,您可以通知所有观察者,然后让观察者根据信息选择是否对通知作出反应。

以PropertyChangeListener为例。 PropertyChangeSupport在所有观察者上调用propertyChanged并在方法中传递PropertyChangeEvent来进行观察者通知。此PropertyChangeEvent具有String propertyName字段,任何观察者都可以使用该字段来帮助确定它将如何响应消息。

答案 1 :(得分:0)

以下是适合您的设计方法:

  1. 在您的Subject类中,创建多个观察者列表
  2. 一个观察员列表应包含所有观看者以广播消息
  3. 创建其他观察员列表以使消息变通。根据您需要多播的消息类型,您可以获得多条消息。
  4. 因此,当您需要将消息发送给所有观察者时,只需在广播列表中调用onMessage或类似的观察者通知方法
  5. 当您需要将消息发送到选定的观察者列表时,请在您的多播列表中调用onMessage或类似的观察者通知方法

答案 2 :(得分:0)

将“提示”变量添加到您的通知方法(http://en.wikipedia.org/wiki/Observer_pattern)。传递要更新的观察者的实例。修改你的通知方法,检查“提示”是否正确,并做正确的事。