觀察者模式

處理一對多或者觸發(fā)器時用到的設(shè)計模式

  • 一般思路(面向過程)
觀察者模式1.png

問題
定制不同的公告板顯示內(nèi)容時(第三方)需在dataChange中增加另外的入?yún)?br> 不能順利的解耦合

擴(kuò)展性不足

  • 解決方式
    數(shù)據(jù)類與公告類之間組成一對多的關(guān)系,將公告類注冊到數(shù)據(jù)類當(dāng)中,當(dāng)數(shù)據(jù)類某項數(shù)據(jù)被改動時觸發(fā)已經(jīng)注冊的公告類的處理方法。

原理

被依賴對象 Subject 接口方法 方法入?yún)橐蕾噷ο?/p>

  1. 登記注冊
  2. 移除
  3. 通知

依賴對象 Observer 方法入?yún)樾枰怯浀臄?shù)據(jù)

  1. 接受輸入

被依賴對象通知依賴對象變化


具體實現(xiàn)

被依賴對象A

屬性

顯示參數(shù)
依賴對象列表

方法
  1. 登記注冊 將指定依賴對象放入依賴對象列表中
  2. 移除
  3. 通知 調(diào)用依賴對象列表的登記方法
  4. 觸發(fā)器方法(當(dāng)有數(shù)據(jù)作更改時調(diào)用通知方法)

依賴對象B

方法

1.接受輸入 將輸入?yún)?shù)放入到該對象的屬性中
2.若干處理該參數(shù)的方法


由此可知
只要將依賴對象注冊到被依賴對象的依賴對象列表中,當(dāng)被依賴對象的屬性被改變時,就能觸發(fā)依賴對象的處理方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容