2014/11/29

Design Pattern 讀書心得

  Design Pattern 方面的書讀了兩本,可能是資質太差,總覺得沒有讀的透徹,比對實際工作上設計的系統才有較清晰的領悟.也利用時間將一些心得整理出來:

  • OO(Object Oriented)基礎  : 抽象,繼承,封裝,多型這些基本觀念都不清楚那就不用再談什麼 pattern 了。
  • 有了OO基礎不代表就能自動設計出有彈性,可再利用及可維護的系統。
  • Design Pattern 告訴我們如何組織類別及物件,用來解決特定的問題,因此可以減少實務操作,直接運用可行的 pattern。
  • 將變動的部份封裝,多用合成,少用繼承。
  • Factory pattern :分為factory method 及abstract factory ,其目的是用來將物件的建立封裝起來.factory method 用的是繼承,將物件的建立委給次類別進行。abstract factory 用的是物件合成,物件的建立實作在工廠介面的方法中.factory pattern 提倡鬆綁,以利降低程式和具體類別之間的相依程度。
  • Decorator pattern : 動態地將責任加於物件上,裝飾著提供不同於繼承的另一種選擇
  • Strategy pattern : 將不同演算法個別封裝,就可互相替換。
  • Command pattern:將發出需求的物件與接受(執行)需求的物件分割開來.其它用途:佇列請求/日誌請求。
  • Adapter pattern : object adapter及 class adapter分別使用合成及繼承.這兩種方式在彈性上有其差異。
  • Facade pattern : 提供複雜系統一個簡單的使用介面。
  • Template method pattern : 將演算法骨架定義在一個method中,而演算法會用到的一些method則定義在次類別中。Ex: Arrays.sort(), JFrame.paint().
  • Composite pattern : 將物件合成樹狀結構,用來呈現"部份及整體"的階層關係。客戶端可以一視同仁地對待個別的物件及物件合成的結果。
  • Iterator pattern : 此模式讓我們取得一個Collection中的每一個元素,而不需將collection中的實作透露出來。可以使用 java.util.Iterator, 也可自行實作。