設計模式 【設計模式】工廠方法模式 【設計模式】抽象工廠模式 【設計模式】單例模式 【設計模式】策略模式 【設計模式】觀察者模式 一、介紹 觀察者模式是一種行為設計模式,當一個對象的狀態(tài)發(fā)生改變時,依賴(觀察)它的對象會接收到通知,并進行自動的更新操作。 舉例:某公司發(fā)布了一款新的手機,性能很強大,
觀察者模式是一種行為設計模式,它允許對象在狀態(tài)發(fā)生改變時通知其依賴者,并自動進行更新操作。這篇文章將介紹觀察者模式的優(yōu)缺點、核心結(jié)構(gòu)以及在PHP中的代碼實現(xiàn)。
觀察者模式是一種行為設計模式,當一個對象的狀態(tài)發(fā)生改變時,依賴(觀察)它的對象會接收到通知,并進行自動的更新操作。
舉例:某公司發(fā)布了一款新的手機,性能很強大,許多人都想買,但是該公司又沒宣布售賣時間。想買的人為了第一時間就擁有這臺手機,就必須每天到官網(wǎng)或線下實體店看有沒有出售,這樣對于用戶來說體驗很不好。如果不想頻繁的去查看,這時想買手機的用戶就可以在實體店或網(wǎng)站上留下聯(lián)系方式,等到手機出售的當天公司通過郵件或者短信的形式通知到購買者。
優(yōu)點:
缺點:
1、在PHP中已經(jīng)有相關(guān)的Subject(目標)和Observer(觀察者)接口了,我們可以拿來直接實現(xiàn)。分別是SplSubject和SplObserver接口,以下代碼就是以這兩個接口為例進行編寫。其中還用到一個SplObjectStorage類,它也是PHP中的一個類,用于存儲和管理對象。它是一個關(guān)聯(lián)數(shù)組,其中鍵是對象的哈希值,值是對象本身。
1.1、實現(xiàn)ConcreteSubject(具體目標)
1.2、實現(xiàn)ConcreteObserver(具體觀察者),我這里實現(xiàn)了兩個觀察者,分別為 ConcreteObserverB 和?ConcreteObserverA。
1.3、客戶端調(diào)用
1.4、客戶端調(diào)用結(jié)果展示
2、上面介紹了使用PHP本身觀察者設計模式的接口,下面就自己手寫一個觀察者模式。
2.1、實現(xiàn)Subject(目標)接口
2.2、實現(xiàn)ConcreteSubject(具體目標)
2.3、實現(xiàn)Observer(觀察者)
2.4、實現(xiàn)ConcreteObserver(具體觀察者),分別為 ConcreteObserverB 和?ConcreteObserverA。
2.5、客戶端調(diào)用
2.6、運行結(jié)果展示
小編推薦閱讀
本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)