1. 程式人生 > >學習筆記 7種結構型設計模式簡單對比

學習筆記 7種結構型設計模式簡單對比

  • Adapter模式主要應用於“希望複用一些現存的類,但是介面又與複用環境要求不一致的情況” ,在遺留程式碼複用、類庫遷移等方面非常有用。
  •    
  • Bridge模式的應用一般在“兩個非常強的變化維度”。Bridge模式使用“物件間的組合關係”解耦了抽象和實現之間固有的繫結關係,使得抽象和實現可以沿著各自的維護來變化。
  •    
  • Composite模式採用樹形結構來實現普遍存在的物件容器,從而將“一對多”的關係轉化為“一對一”的關係,使得客戶程式碼可以一致地處理物件和物件容器,無需關心處理的是單個的物件,還是組合的物件容器。 將“客戶程式碼與複雜的物件容器結構”解耦是Composite模式的核心思想,解耦之後,客戶程式碼將與純粹的抽象介面(而非物件容器的複雜內部實現)發生依賴關係,從而更能“應對變化”。
  •    
  • 通過採用組合、而非繼承的手法, Decorator(裝飾)模式實現了在執行時動態地擴充套件物件功能的能力,而且可以根據需要擴充套件多個功能。避免了單獨使用繼承帶來的“靈活性差”和“多子類衍生問題”。
  •    
  • 從客戶程式的角度來看, Facade(外觀)模式不僅簡化了整個元件系統的介面,同時對於元件內部與外部客戶程式來說,從某種程度上也達到了一種“解耦”的效果——內部子系統的任何變化不會影響到Façade介面的變化。Façade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。Façade很多時候更是一種架構設計模式。
  •    
  • 面向物件很好地解決了抽象性的問題,但是作為一個執行在機器中的程式實體,我們需要考慮物件的代價問題。Flyweight(享元)設計模式主要解決面向物件的代價問題,一般不觸及面向物件的抽象性問題。 運用共享技術有效地支援大量細粒度的物件。
  •    
  • Proxy並不一定要求保持介面的一致性,只要能夠實現間接控制,有時候損及一些透明性是可以接受的。