《Head First 設計模式》書摘-策略模式/觀察者模式

歡迎訪問本人博客查看原文: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。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容