歡迎訪問本人博客查看原文:http://wangnan.tech
策略模式
定義:
定義算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶
oo基礎:
抽象 封裝 多態 繼承
get到的oo原則:
- 封裝變化
- 多用組合,少用繼承
- 針對接口編程,不針對實現編程
要點
- 知道O O基礎,并不足以讓你設計出良好的O O系統。
- 良好的O O設計必須具備可復用、可擴充、可維護三個特性
- 模式可以讓我們建造出具有良好O O 設計質量的系統。
- 模式被認為是歷經驗證的O O設計經驗。
- 模式不是代碼,而是針對設計問題的通用解決方案。你把它們應用到特定的應用中。
- 模式不是被發明,而是被發現
- 大多數的模式和原則,都著眼于軟件變化的主題。
- 大多數的模式都允許系統局部改變獨立于其他部分。
- 我們常把系統中,會變化的部分抽出來封裝
- 模式讓開發人員之間有共享的語言, 最大化溝通的價值。
觀察者模式
定義
在對象之間定義一對多的依賴,這樣一來,當一個對象改變狀態,依賴它的對象都會收到通知,
并自動更新。
get到的oo原則
為交互對象之間的松耦合設計而努力
要點
- 觀察者模式定義了對象之間一對多的關系。
- 主題(也就是可觀察者)用一個共同的接口來更新觀察者
- 觀察者和可觀察者之間用松耦合方式結合(loosecoupling),可觀察者不知道觀察
者的細節,只知道觀察者實現了觀察者接口。 - 使用此模式時,你可從被觀察者處推(push)或拉(pull)數據(然而,推的方式被認為更“正確”)。
- 有多個觀察者時,不可以依賴特定的通知次序。
- J a v a有多種觀察者模式的實現,包括了通用的java.util.Observable。
- 要注意java.util.Observable實現上所帶來的一些問題。
- 如果有必要的話,可以實現自己的Observable,這并不難,不要害怕。
- Swing大量使用觀察者模式,許多GUI框架也是如此。
- 此模式也被應用在許多地方,例如:JavaBeans、RMI。