處理一對(duì)多或者觸發(fā)器時(shí)用到的設(shè)計(jì)模式
- 一般思路(面向過程)
觀察者模式1.png
問題
定制不同的公告板顯示內(nèi)容時(shí)(第三方)需在dataChange中增加另外的入?yún)?br>
不能順利的解耦合
擴(kuò)展性不足
- 解決方式
數(shù)據(jù)類與公告類之間組成一對(duì)多的關(guān)系,將公告類注冊(cè)到數(shù)據(jù)類當(dāng)中拘哨,當(dāng)數(shù)據(jù)類某項(xiàng)數(shù)據(jù)被改動(dòng)時(shí)觸發(fā)已經(jīng)注冊(cè)的公告類的處理方法硼补。
原理
被依賴對(duì)象 Subject 接口方法 方法入?yún)橐蕾噷?duì)象
- 登記注冊(cè)
- 移除
- 通知
依賴對(duì)象 Observer 方法入?yún)樾枰怯浀臄?shù)據(jù)
- 接受輸入
被依賴對(duì)象通知依賴對(duì)象變化
具體實(shí)現(xiàn)
被依賴對(duì)象A
屬性
顯示參數(shù)
依賴對(duì)象列表
方法
- 登記注冊(cè) 將指定依賴對(duì)象放入依賴對(duì)象列表中
- 移除
- 通知 調(diào)用依賴對(duì)象列表的登記方法
- 觸發(fā)器方法(當(dāng)有數(shù)據(jù)作更改時(shí)調(diào)用通知方法)
依賴對(duì)象B
方法
1.接受輸入 將輸入?yún)?shù)放入到該對(duì)象的屬性中
2.若干處理該參數(shù)的方法
由此可知
只要將依賴對(duì)象注冊(cè)到被依賴對(duì)象的依賴對(duì)象列表中献汗,當(dāng)被依賴對(duì)象的屬性被改變時(shí)冗栗,就能觸發(fā)依賴對(duì)象的處理方法摹迷。