類圖
推模式
拉模式
推拉模式
獲取觀察對象的變更信息,有推和拉兩種模式
- 推模式:ConcreteObserver通過Observer.update中的changeInfo參數,獲取觀察對象的變更信息
- 拉模式:ConcreteObserver.update的方法實現中,通過調用IchangeSource.getChangeInfo接口獲取觀察對象的變更信息
建議
- 觀察對象複雜,觀察者需要提示,推模式比較合適
- 觀察對象簡單,拉模式比較合適
遵循的設計原則
設計原則:設計模式-01 六大設計原則
- 開閉原則(OCP):可隨時添加新的觀察者
- Liskov替換原則(LSP):Subject.notifyAll中,通過調用Observer.update方法通知具體的觀察者(子類可以替換父類)
- 依賴倒置原則(DIP):Subject沒有依賴具體的觀察者
閱讀更多 IT學習分享 的文章