PHP - 設計模式之 觀察者模式

觀察者模式

概述部分

1、觀察者模式(observer),當一個對象狀態發生改變時,依賴它的對象全部都會收到通知,並自動更新

2、場景:一個事件發生之後,要執行一連串的更新操作。傳統的編程方式,就是直接在事件代碼的後面,加入處理邏輯。但當更新的邏輯增多之後,代碼會變得難以維護。這種方式是耦合的,侵入式的,增加新的邏輯,就需要修改主體代碼

3、觀察者模式實現了低耦合,非侵入式的通知和更新機制

 

代碼部分

1、事件發生者

2、事件觀察者

3、事件主體

這裏,Event類調用事件發生者類,然後,調用父類(事件發生者類)通知所有觀察者的方法notify,一旦有任何事件發生,便會以便利監聽列表的方式,通知到每一個觀察者。

具體操作,直接實例對象,調用trigger方法。

如果有事件,調用事件觀察者接口,實現接口的update方法,實現相應的更新操作動作

 

 

調用的時候,將事件加入到監聽列表

這樣

調用trigger方法的時候

會通過調用父類(抽象類)的notify方法

遍歷監聽列表裏的所有的事件,並執行update更新操作,而這裏的update操作來自觀察者類

而所有的事件,都實現了這個接口

這樣,瀏覽器最後的輸出就是:

 

總結

這就是觀察者模式的好處,觀察者(接口),負責觀察一旦有事件發生,就執行相應的更新操作;發生者(抽象類),負責將所有的事件存入監聽列表,並通知觀察者,執行所有的相應的更新操作。實現了低耦合,避免了主體代碼的更改,方便了擴展,代碼質量也更加高效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章