模式的秘密-观察者模式(二)
認(rèn)識(shí)觀察者模式:
命名建議:
第一:目標(biāo)接口的定義,建議在名稱后面加上Subject。
第二:觀察者接口的定義,建議在名稱后面跟上Observer。
第三:觀察者接口的更新方法,建議名稱為Update。
?
觸發(fā)通知的時(shí)機(jī):完成了狀態(tài)維護(hù)后觸發(fā)。
?
?
實(shí)現(xiàn)的兩種方式:推模型和拉模型
推模型:
目標(biāo)對(duì)象主動(dòng)向觀察者推送目標(biāo)的詳細(xì)信息,推送的信息通常是目標(biāo)對(duì)象的全部或部分?jǐn)?shù)據(jù)。
拉模型:
目標(biāo)對(duì)象在通知觀察者的時(shí)候,只傳遞少量信息。如果觀察者需要更具體的信息,由觀察者主動(dòng)到目標(biāo)對(duì)象中獲取,
相當(dāng)于是觀察者從目標(biāo)對(duì)象中拉數(shù)據(jù)。
一般這種模型的實(shí)現(xiàn)中,會(huì)把目標(biāo)對(duì)象自身通過update方法傳遞給觀察者(上一節(jié)例子就是該模式)。
?
如果要把上一節(jié)的拉模型改成推模型,只需要把update方法以及相關(guān)方法的觀察者對(duì)象修改為weatherContent,
把所有的信息全部傳給觀察者調(diào)用,而不是觀察者自己通過傳入的目標(biāo)對(duì)象獲取。
?
兩個(gè)模型比較:
推模型是假定目標(biāo)對(duì)象知道觀察者需要的數(shù)據(jù)。
拉模型是目標(biāo)對(duì)象不知道觀察者需要什么數(shù)據(jù),因此把自身傳給觀察者,由觀察者來取值。
?
推模型會(huì)使得觀察者對(duì)象難以復(fù)用。
拉模型下:update方法的參數(shù)是目標(biāo)對(duì)象本身,基本上可以適用各種情況的需要。
?
總結(jié)
以上是生活随笔為你收集整理的模式的秘密-观察者模式(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单易用的库存管理软件、进销存软件
- 下一篇: 如何用web3.js在以太坊区块链上保存