處理一對多或者觸發(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>
- 登記注冊
- 移除
- 通知
依賴對象 Observer 方法入?yún)樾枰怯浀臄?shù)據(jù)
- 接受輸入
被依賴對象通知依賴對象變化
具體實現(xiàn)
被依賴對象A
屬性
顯示參數(shù)
依賴對象列表
方法
- 登記注冊 將指定依賴對象放入依賴對象列表中
- 移除
- 通知 調(diào)用依賴對象列表的登記方法
- 觸發(fā)器方法(當(dāng)有數(shù)據(jù)作更改時調(diào)用通知方法)
依賴對象B
方法
1.接受輸入 將輸入?yún)?shù)放入到該對象的屬性中
2.若干處理該參數(shù)的方法
由此可知
只要將依賴對象注冊到被依賴對象的依賴對象列表中,當(dāng)被依賴對象的屬性被改變時,就能觸發(fā)依賴對象的處理方法。