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