設(shè)計(jì)模式 【設(shè)計(jì)模式】工廠方法模式 【設(shè)計(jì)模式】抽象工廠模式 【設(shè)計(jì)模式】單例模式 【設(shè)計(jì)模式】策略模式 【設(shè)計(jì)模式】觀察者模式 一、介紹 觀察者模式是一種行為設(shè)計(jì)模式,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),依賴(觀察)它的對(duì)象會(huì)接收到通知,并進(jìn)行自動(dòng)的更新操作。 舉例:某公司發(fā)布了一款新的手機(jī),性能很強(qiáng)大,
觀察者模式是一種行為設(shè)計(jì)模式,它允許對(duì)象在狀態(tài)發(fā)生改變時(shí)通知其依賴者,并自動(dòng)進(jìn)行更新操作。這篇文章將介紹觀察者模式的優(yōu)缺點(diǎn)、核心結(jié)構(gòu)以及在PHP中的代碼實(shí)現(xiàn)。
觀察者模式是一種行為設(shè)計(jì)模式,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),依賴(觀察)它的對(duì)象會(huì)接收到通知,并進(jìn)行自動(dòng)的更新操作。
舉例:某公司發(fā)布了一款新的手機(jī),性能很強(qiáng)大,許多人都想買,但是該公司又沒(méi)宣布售賣時(shí)間。想買的人為了第一時(shí)間就擁有這臺(tái)手機(jī),就必須每天到官網(wǎng)或線下實(shí)體店看有沒(méi)有出售,這樣對(duì)于用戶來(lái)說(shuō)體驗(yàn)很不好。如果不想頻繁的去查看,這時(shí)想買手機(jī)的用戶就可以在實(shí)體店或網(wǎng)站上留下聯(lián)系方式,等到手機(jī)出售的當(dāng)天公司通過(guò)郵件或者短信的形式通知到購(gòu)買者。
優(yōu)點(diǎn):
缺點(diǎn):
1、在PHP中已經(jīng)有相關(guān)的Subject(目標(biāo))和Observer(觀察者)接口了,我們可以拿來(lái)直接實(shí)現(xiàn)。分別是SplSubject和SplObserver接口,以下代碼就是以這兩個(gè)接口為例進(jìn)行編寫。其中還用到一個(gè)SplObjectStorage類,它也是PHP中的一個(gè)類,用于存儲(chǔ)和管理對(duì)象。它是一個(gè)關(guān)聯(lián)數(shù)組,其中鍵是對(duì)象的哈希值,值是對(duì)象本身。
1.1、實(shí)現(xiàn)ConcreteSubject(具體目標(biāo))
1.2、實(shí)現(xiàn)ConcreteObserver(具體觀察者),我這里實(shí)現(xiàn)了兩個(gè)觀察者,分別為 ConcreteObserverB 和?ConcreteObserverA。
1.3、客戶端調(diào)用
1.4、客戶端調(diào)用結(jié)果展示
2、上面介紹了使用PHP本身觀察者設(shè)計(jì)模式的接口,下面就自己手寫一個(gè)觀察者模式。
2.1、實(shí)現(xiàn)Subject(目標(biāo))接口
2.2、實(shí)現(xiàn)ConcreteSubject(具體目標(biāo))
2.3、實(shí)現(xiàn)Observer(觀察者)
2.4、實(shí)現(xiàn)ConcreteObserver(具體觀察者),分別為 ConcreteObserverB 和?ConcreteObserverA。
2.5、客戶端調(diào)用
2.6、運(yùn)行結(jié)果展示
小編推薦閱讀
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀基于鴻蒙NEXT的血型遺傳計(jì)算器開(kāi)發(fā)案例
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)