觀察者模式
概述部分
1、觀察者模式(observer),當一個對象狀態發生改變時,依賴它的對象全部都會收到通知,並自動更新
2、場景:一個事件發生之後,要執行一連串的更新操作。傳統的編程方式,就是直接在事件代碼的後面,加入處理邏輯。但當更新的邏輯增多之後,代碼會變得難以維護。這種方式是耦合的,侵入式的,增加新的邏輯,就需要修改主體代碼
3、觀察者模式實現了低耦合,非侵入式的通知和更新機制
代碼部分
1、事件發生者
2、事件觀察者
3、事件主體
這裏,Event類調用事件發生者類,然後,調用父類(事件發生者類)通知所有觀察者的方法notify,一旦有任何事件發生,便會以便利監聽列表的方式,通知到每一個觀察者。
具體操作,直接實例對象,調用trigger方法。
如果有事件,調用事件觀察者接口,實現接口的update方法,實現相應的更新操作動作
調用的時候,將事件加入到監聽列表
這樣
調用trigger方法的時候
會通過調用父類(抽象類)的notify方法
遍歷監聽列表裏的所有的事件,並執行update更新操作,而這裏的update操作來自觀察者類
而所有的事件,都實現了這個接口
這樣,瀏覽器最後的輸出就是:
總結:
這就是觀察者模式的好處,觀察者(接口),負責觀察一旦有事件發生,就執行相應的更新操作;發生者(抽象類),負責將所有的事件存入監聽列表,並通知觀察者,執行所有的相應的更新操作。實現了低耦合,避免了主體代碼的更改,方便了擴展,代碼質量也更加高效!