1. 程式人生 > 實用技巧 >常用設計模式一句話概括

常用設計模式一句話概括

1. 簡單工廠模式

在建立一個物件時不向客戶暴露內部細節,並提供一個建立物件的通用介面。
在這裡插入圖片描述

2. 工廠方法

定義了一個建立物件的介面,但由這個介面的子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類。
在這裡插入圖片描述

3. 抽象工廠

提供一個介面,用於建立 相關的產品族 。
在這裡插入圖片描述
在這裡插入圖片描述

4. 原型模式

  1. 建立一個原型物件,通過複製這個原型物件來建立新的物件

5. 建造者模式(生成器模式)(Builder模式)

將一個複雜物件的構造和它的表示相分離,使同樣的構建過程可以建立不同的表示。它將一個複雜的物件分解為多個簡單的物件,一步一步地構造而成。產品的組成部分是不變的,但是每一部分是可以靈活選擇的。

建造者(Builder)模式由產品、抽象建造者、具體建造者、指揮者等 4 個要素構成,現在我們來分析其基本結構和實現方法。

  1. 產品角色(Product):它是包含多個組成部件的複雜物件,由具體建造者來建立其各個零部件。
  2. 抽象建造者(Builder):它是一個包含建立產品各個子部件的抽象方法的介面,通常還包含一個返回複雜產品的方法 getResult()。
  3. 具體建造者(Concrete Builder):實現 Builder 介面,完成複雜產品的各個部件的具體建立方法。
  4. 指揮者(Director):它呼叫建造者物件中的部件構造與裝配方法完成複雜物件的建立,在指揮者中不涉及具體產品的資訊。
  5. 在這裡插入圖片描述

5.1 應用場景

  1. 相同的方法,不同的執行順序,產生不同的結果
  2. 產品有很多簡單物件組成,產品的組成部分是不變的,但是每一部分可以靈活選擇。

5.2 與工廠模式的區別

  1. 建造者模式唯一區別於工廠模式的是針對複雜物件的建立。也就是說,如果建立簡單物件,通常都是使用工廠模式進行建立,而如果建立複雜物件,就可以考慮使用建造者模式。
  2. 建造者模式更加註重方法的呼叫順序,工廠模式注重建立物件。

迭代器模式

提供一種順序訪問聚合物件元素的方法,並不暴露聚合物件的內部表示
在這裡插入圖片描述

介面卡模式

把一個類的介面轉換成另一個使用者需要的介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
介面卡模式(Adapter)包含以下主要角色。

  1. 目標(Target)介面:當前系統業務所期待的介面,它可以是抽象類或介面。
  2. 適配者(Adaptee)類:它是被訪問和適配的現存元件庫中的元件介面。
  3. 介面卡(Adapter)類:它是一個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者。
    介面卡模式分為類結構型模式和物件結構型模式,前者的類耦合度比較高,用的比較少。
    類介面卡模式的結構圖如下圖 所示。
    在這裡插入圖片描述
    物件介面卡模式的結構圖如下圖 所示。
    在這裡插入圖片描述
    其中介面卡模式和迭代器模式都是在Java的容器裡面使用了
    https://www.jianshu.com/p/1ab3209d0f65

裝飾模式

指在不改變現有物件結構的情況下,動態地給該物件增加一些職責(即增加其額外功能)的模式,它屬於物件結構型模式。
或者也可以這麼說,使用組合關係來建立一個包裝物件來包裹真實物件,在保持真實物件的類結構不變的前提下,為其提供額外的功能。

主要優點:
採用裝飾模式擴充套件物件的功能比採用繼承方式更加靈活。
可以設計出多個不同的具體裝飾類,創造出多個不同行為的組合。

主要缺點:
裝飾模式增加了許多子類,如果過度使用會使程式變得很複雜。
在這裡插入圖片描述
裝飾模式的參考資料
https://www.jianshu.com/p/1f3e6eeb54c3