設計模式 行為型設計模式 4 觀察者模式(php)

2021-10-10 09:32:34 字數 786 閱讀 2605

行為型設計模式

觀察者模式

觀察者模式(observer pattern)屬於行為型模式之一,指當乙個物件的狀態發生變化時,能夠自動地通知其它關聯物件,並自動重新整理物件狀態。

觀察者模式提供給關聯物件一種同步通訊的手段,使某個物件與依賴它的其他物件之間保持狀態同步。

1、抽象的被觀察者角色

管理了所有觀察者集合,負責增加或刪除某觀察者等操作,並且負責在狀態發生變化時,通知相應的觀察者。(一般使用抽象類或介面實現)

2、具體的被觀察者

實現了觀察者介面,在狀態發生變化時,更新自己狀態並負責通知觀察者

3、抽象的觀察者角色

定義了統一的介面,用於通知觀察者狀態更新

4、具體的觀察者

實現了介面中更新狀態方法

1、設計中有2個維度的變化,並且其中乙個維度的變化依賴與另一維度的狀態更新,這是可以使用觀察者將其依賴解耦

2、乙個物件狀態發生變化將影響多個其他物件的狀態也發生變化,但不關注具體有多少個物件發生變化。可以降低這種關聯變化的耦合度。

3、乙個物件變化必須通知其他物件,但不必具體知道這個物件是誰

1、被觀察者與觀察者解耦

2、實現一種觸發機制

1、如果觀察者過多,通知將耗費較大的資源和時間。

2、如果觀察者之間有迴圈依賴的化,將導致迴圈呼叫和程式奔潰,使用時需謹慎

3、觀察者無法知道觀察目標狀態發生的原因,只能接收到狀態發生變化的通知

行為型設計模式 觀察者模式

觀察者模式定義一種一對多的依賴關係,讓多個觀察者物件同時監聽某一種主題物件,這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自動更新。也就是說乙個類物件可以有多個監聽,當某乙個屬性或者方法發生變化,對應的多個監聽就被觸發,執行各自方法,實現更新。解決思路 定義乙個觀察者模式介面,其實現...

設計模式筆記 19 觀察者模式(行為型)

定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通 知並自動更新 在軟體構建過程中,我們需要為某些物件建立一種 通知依賴關係 乙個物件 目標物件 的狀態發生改變,所有的依賴物件 觀察者物件 都將得到通知。如果這樣的依賴關係過於緊密,將使軟體不能很好地抵禦變化...

設計模式筆記 19 觀察者模式(行為型)

定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通 知並自動更新 在軟體構建過程中,我們需要為某些物件建立一種 通知依賴關係 乙個物件 目標物件 的狀態發生改變,所有的依賴物件 觀察者物件 都將得到通知。如果這樣的依賴關係過於緊密,將使軟體不能很好地抵禦變化...