常用設計模式一句話概括
阿新 • • 發佈:2020-10-08
1. 簡單工廠模式
在建立一個物件時不向客戶暴露內部細節,並提供一個建立物件的通用介面。
2. 工廠方法
定義了一個建立物件的介面,但由這個介面的子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類。
3. 抽象工廠
提供一個介面,用於建立 相關的產品族 。
4. 原型模式
- 建立一個原型物件,通過複製這個原型物件來建立新的物件
5. 建造者模式(生成器模式)(Builder模式)
將一個複雜物件的構造和它的表示相分離,使同樣的構建過程可以建立不同的表示。它將一個複雜的物件分解為多個簡單的物件,一步一步地構造而成。產品的組成部分是不變的,但是每一部分是可以靈活選擇的。
建造者(Builder)模式由產品、抽象建造者、具體建造者、指揮者等 4 個要素構成,現在我們來分析其基本結構和實現方法。
- 產品角色(Product):它是包含多個組成部件的複雜物件,由具體建造者來建立其各個零部件。
- 抽象建造者(Builder):它是一個包含建立產品各個子部件的抽象方法的介面,通常還包含一個返回複雜產品的方法 getResult()。
- 具體建造者(Concrete Builder):實現 Builder 介面,完成複雜產品的各個部件的具體建立方法。
- 指揮者(Director):它呼叫建造者物件中的部件構造與裝配方法完成複雜物件的建立,在指揮者中不涉及具體產品的資訊。
5.1 應用場景
- 相同的方法,不同的執行順序,產生不同的結果
- 產品有很多簡單物件組成,產品的組成部分是不變的,但是每一部分可以靈活選擇。
5.2 與工廠模式的區別
- 建造者模式唯一區別於工廠模式的是針對複雜物件的建立。也就是說,如果建立簡單物件,通常都是使用工廠模式進行建立,而如果建立複雜物件,就可以考慮使用建造者模式。
- 建造者模式更加註重方法的呼叫順序,工廠模式注重建立物件。
迭代器模式
提供一種順序訪問聚合物件元素的方法,並不暴露聚合物件的內部表示
介面卡模式
把一個類的介面轉換成另一個使用者需要的介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
介面卡模式(Adapter)包含以下主要角色。
- 目標(Target)介面:當前系統業務所期待的介面,它可以是抽象類或介面。
- 適配者(Adaptee)類:它是被訪問和適配的現存元件庫中的元件介面。
- 介面卡(Adapter)類:它是一個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者。
介面卡模式分為類結構型模式和物件結構型模式,前者的類耦合度比較高,用的比較少。
類介面卡模式的結構圖如下圖 所示。
物件介面卡模式的結構圖如下圖 所示。
其中介面卡模式和迭代器模式都是在Java的容器裡面使用了
https://www.jianshu.com/p/1ab3209d0f65
裝飾模式
指在不改變現有物件結構的情況下,動態地給該物件增加一些職責(即增加其額外功能)的模式,它屬於物件結構型模式。
或者也可以這麼說,使用組合關係來建立一個包裝物件來包裹真實物件,在保持真實物件的類結構不變的前提下,為其提供額外的功能。
主要優點:
採用裝飾模式擴充套件物件的功能比採用繼承方式更加靈活。
可以設計出多個不同的具體裝飾類,創造出多個不同行為的組合。
主要缺點:
裝飾模式增加了許多子類,如果過度使用會使程式變得很複雜。
裝飾模式的參考資料
https://www.jianshu.com/p/1f3e6eeb54c3