繁体   English   中英

观察者模式 - 观察者创建

[英]Observer pattern - observer creation

我正在学习设计模式,我偶然发现了一个我真不知道如何找到答案的问题。 在观察者设计模式类图中,我已经看到具体观察者通常具有对主题的引用。 但是,谁设定了该参考的价值? 如何调用Attaching函数? 观察者是根据他们所拥有的主题参考来自己调用它,还是其他人设置主题然后将观察者附加到主题上? 我已经找了一些例子,但我仍然遇到麻烦找到实现这个的最好方法。

观察者是希望被通知主题的变化或事件的组件。 它决定观察该主题并将其自身添加到该主题所维持的观察者列表中。

典型的用例是包含按钮的图形面板。 图形面板创建一个按钮并将其添加到自身。 并且它希望每次单击按钮时都显示一个对话框。 因此它将自身添加为按钮的观察者,按钮会在单击时通知面板。

在此示例中,观察者创建它观察到的对象。 但是有些情况并非如此,并且当对主题的引用作为参数传递给它的构造函数或其方法之一时。 这与观察者模式本身的原理无关。

主体是控制某些事件或具有观察者感兴趣的某些属性的对象。观察者向主体注册以表达该兴趣,并且主体保留那些注册观察者的列表。

当主体的属性发生变化或发生感兴趣的事件时,主体会遍历其注册的观察者列表并通知他们变更或事件。

通知观察员的具体细节可能有所不同。 可能是他们有一个众所周知的方法被调用。 可能是他们指定了他们想要调用的自定义方法,他们将其指定为注册过程的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM