我正在学习设计模式,我偶然发现了一个我真的不知道如何找到答案的问题。在观察者设计模式类图中,我已经看到具体的观察者通常有一个对主题的引用。但是,谁设置了该引用的值呢?以及如何调用附加函数?观察者是根据他们拥有的主体引用来自己命名的,还是其他人设置了主体,然后将观察者附加到主体?我已经寻找了一些例子,但是我仍然很难找到最好的方法来实现它。
发布于 2013-05-10 23:50:16
观察者是希望获得关于主题的更改或事件的通知的组件。它决定观察该对象,并将自己添加到该对象维护的观察者列表中。
典型的用例是一个包含按钮的图形面板。图形面板创建一个按钮并将其添加到其自身。并且它希望在每次单击按钮时都显示一个对话框。因此,它将自己添加为该按钮的观察者,并且该按钮在被单击时通知面板。
在此示例中,观察者创建它观察到的对象。但在某些情况下,情况并非如此,当对主题的引用作为参数传递给其构造函数或方法时。这与观察者模式本身的原则无关。
发布于 2013-05-10 23:49:19
主体是一个客体,它控制着某个事件或具有观察者感兴趣的某些属性。观察者将自己注册到主题以表达兴趣,并且主题保留了这些注册的观察者的列表。
当主题的属性发生更改或感兴趣的事件发生时,主题将遍历已注册的观察者列表,并将更改或事件通知给它们。
如何通知观察者的细节可能会有所不同。这可能是因为他们有一个广为人知的方法被调用。可能是他们指定了他们想要调用的自定义方法,并将其指定为注册过程的一部分。
https://stackoverflow.com/questions/16485922
复制相似问题