咪免直播高品质美女在线视频互动社区_咪免直播官方版_咪免直播直播视频在线观看免费版下载

您的位置:首頁 > 軟件教程 > 教程 > 觀察者模式:行為設計模式的介紹和實現(xiàn)

觀察者模式:行為設計模式的介紹和實現(xiàn)

來源:好特整理 | 時間:2024-06-06 09:45:59 | 閱讀:91 |  標簽: 觀察者 設計   | 分享到:

設計模式 【設計模式】工廠方法模式 【設計模式】抽象工廠模式 【設計模式】單例模式 【設計模式】策略模式 【設計模式】觀察者模式 一、介紹 觀察者模式是一種行為設計模式,當一個對象的狀態(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)缺點

優(yōu)點:

  • 符合開閉原則。 無需修改發(fā)布者代碼就能引入新的觀察者類。
  • 可以在運行時建立對象之間的聯(lián)系。

缺點:

  • 無法設置訂閱者收到的順序
  • 當觀察者對象很多時,通知的發(fā)布會花費很多時間,影響程序的效率

三、核心結(jié)構(gòu)

  • Subject(目標):被觀察者,它是指被觀察的對象。 類中有一個用來存放觀察者對象的容器,這個容器是被觀察者類的核心。其中還有幾個方法:
    • attach方法是向這個容器中添加觀察者對象。
    • detach方法是從容器中移除觀察者對象。
    • notify方法是依次調(diào)用觀察者對象的對應方法。
  • ConcreteSubject(具體目標):目標類的具體子類,當它的狀態(tài)發(fā)生改變時,向它的各個觀察者發(fā)出通知。同時它還實現(xiàn)了在目標類中定義的抽象業(yè)務邏輯方法(如果有的話)。
  • Observer(觀察者):觀察者將對觀察目標的改變做出反應,觀察者一般定義為接口,該接口聲明了更新數(shù)據(jù)的方法 update()。
  • ConcreteObserver(具體觀察者):在具體觀察者中維護一個指向具體目標對象的引用,它存儲具體觀察者的有關(guān)狀態(tài),這些狀態(tài)需要和具體目標的狀態(tài)保持一致,它實現(xiàn)了在觀察者 Observer 中定義的 update()方法。

四、代碼實現(xiàn)

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é)果展示

觀察者模式:行為設計模式的介紹和實現(xiàn)

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é)果展示

觀察者模式:行為設計模式的介紹和實現(xiàn)

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

觀察者 1.0
觀察者 1.0
類型:休閑益智  運營狀態(tài):正式運營  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

《觀察者》是無不游工作室開發(fā)的一款趣味十足的休閑闖關(guān)游戲,游戲玩法非常的多樣化,并且設計者還在游戲

相關(guān)視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)