設計模式之建立類模式PK

2022-05-10 23:35:40 字數 1401 閱讀 1283

建立類模式包括:

工廠方法模式

建造者模式

抽象工廠模式

單例模式

原型模式

建立類模式能夠提供物件的建立和管理職責.

其中單例模式和原型模式非常容易理解, 單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.

工廠方法模式注重的是整體物件的建立方法,而建造者模式注重的是部件構建的過程,旨在通過一步一步的精確構造建立出乙個複雜的物件.

工廠方法模式和建造者模式的區別:

意圖不同. 在工廠方法模式中, 我們關注的是產品的整體,無需關心產品的各部分是如何建立出來的; 但是在建造者模式中,乙個具體產品的產生是依賴各個部件的產生以及裝配順序,它關注的是"由零件一步一步地組裝出產品物件". 簡單地說, 工廠模式是乙個物件建立的粗線條應用,建造者模式則是通過細線條勾勒出乙個複雜物件,關注的是產品組成部分的建立過程.

產品的複雜度不同. 工廠方法模式建立的產品一般都是單一性質產品,而建造者模式建立的則是乙個復合產品,它由各個部件復合而成,不見不同產品物件當然不同.

在具體應用中如何選擇呢?這取決於我們在做系統設計時的意圖, 如果需要詳細關注乙個產品不見的生產、安裝步驟,則選擇建造者 ,否則選擇工廠方法模式

抽象工廠模式實現對產品家族的建立, 乙個產品家族是這樣一系列產品: 具有不同分類維度的產品組合,採用抽象工廠模式不需要關心構建過程,只關心什麼產品由什麼工廠生產即可. 而建造者模式則是要求按照指定的藍圖建造產品, 它的主要目的是通過組裝零配件而產生乙個新產品,兩者的區別還是比較明顯的.

抽象工廠模式比建造者模式的尺度要大, 它關注產品整體,而建造者模式關注構建過程, 因此建造者模式可以很容易的構建出乙個嶄新的產品, 只要導演類提供具體的製作流程.

如果希望遮蔽物件的建立過程,只提供乙個封裝良好的物件,可以選擇抽象工廠模式.而建造者模式可以用在構件的裝配方面,如通過裝配不同的元件或者相同元件的不同順序,可以產生乙個新的 物件, 它可以產生乙個非常靈活的架構,方便的擴充套件和 維護系統

工廠方法模式和抽象工廠模式都實現了物件的建立, 都是不需要關心其構建過程的.

工廠方法模式中我們把生成產品類的時間延遲,就是通過對應的工廠類來生成對應的產品類,在這裡我們就可以實現「開發-封閉」原則,無論加多少產品類,我們都不用修改原來類中的**,而是通過增加工廠類來實現。但是這還是有缺點的,如果產品類過多,我們就要生成很多的工廠類。假如我們要實現的產品介面不止乙個,也就是有多個產品介面,不同產品介面有對應的產品族。什麼是產品族呢?簡單的理解就是,不同牌子產的車裡面會有跑車型別,家庭型別,商用型別等的車,不同牌子的車的跑車型別的車可以組成乙個產品族。對於這種情況我們可以採用抽象工廠模式。

抽象工廠模式中我們可以定義實現不止乙個介面,乙個工廠也可以生成不止乙個產品類,抽象工廠模式較好的實現了「開放-封閉」原則,是較為抽象,並具一般性的模式。我們在使用中要注意使用抽象工廠模式的條件。

設計模式之建立類模式PK

建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...

設計模式之結構類模式PK

結構類模式包括 介面卡模式 橋梁模式 組合模式 裝飾模式 門面模式 享元模式 模式 結構類模式著重於如何建立乙個軟體結構 為什麼叫結構類模式呢?因為他們都是通過組合類或物件產生更大結構以適應更高層次的邏輯需求.結構型模式是為解決怎樣組裝現有的類,設計他們的互動方式,從而達到實現一定的功能的目的。首先...

《設計模式之禪》 結構類模式大PK

裝飾模式就是 模式的乙個特殊應用,兩者的共同點是都具有相同的介面,不同點則是 模式著重對 過程的控制,而裝飾模式則是對類的功能進行加強或減弱,它著重類的功能變化。模式是把當前的行為或功能委託給其他物件執行,類負責介面限定 是否可以呼叫真實角色,以及是否對傳送到真實角色的訊息進行變形處理,它不對被主題...