我正在学习设计模式,我偶然发现了一个问题,我真的不知道如何找到答案。在观察者设计模式类图中,我看到一个具体观察者通常会提到主题。但是,谁设置了该参考的价值?以及如何调用附加函数?观察者是否根据他们所拥有的主题参考来调用它,或者其他人设置主题,然后将观察者附加到主题上?我查找了一些例子,但我仍然遇到了麻烦,找到实现这一点的最佳方式。观察者模式 - 观察者创建
1
A
回答
2
观察者是希望被通知有关主题的变化或事件的组件。它决定观察这个主题,并将自己添加到主题维护的观察者列表中。
典型的用例是一个包含按钮的图形面板。图形面板创建一个按钮并将其添加到自身。并且每次点击该按钮时都想显示一个对话框。因此,它将自己添加为按钮的观察者,并且该按钮会在点击时通知面板。
在这个例子中,观察者创建它观察的对象。但在某些情况下情况并非如此,并且当对主题的引用作为参数传递给其构造函数或其方法之一时。这与观察者模式本身的原则无关。
1
主体是控制某些事件或具有观察员感兴趣的某些属性的对象。观察者向主体注册表示该兴趣,主体保留已注册观察者的列表。
当主体的属性发生变化或发生感兴趣的事件时,主体遍历其注册的观察者列表并通知他们有关该更改或事件。
有关通知观察员的具体细节可能会有所不同。这可能是他们有一个众所周知的方法被调用。这可能是因为他们指定了他们想要调用的自定义方法,他们将这些方法指定为注册过程的一部分。
相关问题
- 1. 观察者模式
- 2. 观察者模式建议
- 3. 观察者模式-受试者保持到由观察者
- 4. 观察者模式:如何区分观察者
- 5. 具有两个观察者列表的观察者模式
- 6. 观察者设计模式 - 具体主题和观察者
- 7. 观察者模式Java - 使用线程的多个观察者
- 8. 观察者模式 - 将信息传递给观察者
- 9. 异步观察者模式
- 10. 实现观察者模式
- 11. 了解观察者模式
- 12. 观察者模式imp
- 13. asp.net观察者模式
- 14. jQuery和观察者模式
- 15. 观察者模式混淆
- 16. MVC和观察者模式
- 17. 与观察者模式
- 18. 观察者模式类(JAVA)
- 19. Vue.js和观察者模式
- 20. SI +观察者模式
- 21. 观察者模式vs MVC
- 22. python观察者模式
- 23. Android“观察者”
- 24. Angular2观察者
- 25. CFNotificationCenterRemoveObserver观察者
- 26. 观察者python中的可观察类
- 27. Java观察者和可观察的
- 28. 观察者模式或其他模式
- 29. 观察者模式vs电抗模式
- 30. 创建可观察的并获得观察者在RXJS 5.0中
谢谢。我认为这与我正在寻找的答案非常接近。 – darxsys 2013-05-10 15:51:29