我正在學習設計模式,我偶然發現了一個問題,我真的不知道如何找到答案。在觀察者設計模式類圖中,我看到一個具體觀察者通常會提到主題。但是,誰設置了該參考的價值?以及如何調用附加函數?觀察者是否根據他們所擁有的主題參考來調用它,或者其他人設置主題,然後將觀察者附加到主題上?我查找了一些例子,但我仍然遇到了麻煩,找到實現這一點的最佳方式。觀察者模式 - 觀察者創建
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