2

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

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

如果之前有人问过,我很抱歉......现在我无法找到一些简洁的答案。

4

3 回答 3

5

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

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

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

于 2013-08-17T01:51:55.427 回答
0

add the "hint" variable to your notify method (http://en.wikipedia.org/wiki/Observer_pattern). pass the instance of the observer that you want to update. modify your notify method to check to see if the "hint" is this and do the right thing.

于 2013-08-17T02:33:16.333 回答
0

这是适合您的设计方法:

  1. 在您的 Subject 类中,创建多个观察者列表
  2. 一个观察者列表应包含所有要广播消息的观察者
  3. 创建其他观察者列表以对消息进行多播。根据您需要多播的消息类型,您可以拥有多播消息。
  4. 因此,当您需要向所有观察者发送消息时,只需在广播列表中调用观察者的 onMessage 或类似的通知方法
  5. 当您需要将消息发送到选定的观察者列表时,请在多播列表中调用 onMessage 或类似的观察者通知方法
于 2013-08-17T01:53:22.700 回答