描述
專門定義乙個類來負責建立其他類的例項。將物件的建立和物件本身業務處理分離。
根據引數的不同返回不同類的例項。
結構包括如下角色: 要點
當你需要什麼,只需傳入乙個正確的引數,就可以獲取你所需要的物件,而無需知道其建立細節
優點 1.實現了對責任的分割,提供了專門的工廠類用於建立物件
2.客戶端無須知道所建立的具體產品類的類名,只需要知道具體產 品類所對應的引數即可
缺點違背了開閉原則。系統擴充套件困難,一旦新增新產品,就得修改工廠邏輯。
適用環境
工廠類負責建立的物件比較少:由於建立的物件較 少,不會造成工廠方法中的業務邏輯太過複雜
客戶端只知道傳入工廠類的引數,對於如何建立對 象不關心:客戶端既不需要關心建立細節,甚至連 類名都不需要記住,只需要知道型別所對應的引數
描述定義乙個使用者建立物件的介面,讓子類決定例項化哪乙個類。
結構包括如下角色:
要點通過子類的工廠方法返回合適的產品。具體的工廠類和具體的產品類之間一一對應。
與簡單工廠模式的比較
工廠模式實現了開閉原則
,增加新的產品時無需修改核心的工廠類,但需要增加新的工廠。
適用環境
1.不需要記住具體產品的名字
2.將建立物件的任務委託給多個工廠子類中的某乙個,客戶端在使用時無需關心是哪乙個工廠子類建立產品子類,需要時再動態指定。
描述提供乙個建立一系列
相關或相互依賴物件的介面,而無需指定他們具體的類
結構
與工廠模式的區別
工廠模式針對乙個產品等級結構,而抽象工廠模式需要面對多個產品等級結構。乙個工廠等級結構可以負責多個不同產品等級結構中的產品物件的建立。
適用環境
當系統提供的工廠所需生產的具體產品不是乙個簡單的物件,而是多個位於不同產品等級結構中屬於不同型別的具體產品時,需要使用抽象工廠模式。
即系統中有多於乙個的產品族,而每次只使用其中某一產品族。
缺點在新增新的產品物件時,難以擴充套件抽象工廠以便生產新種類的產品,因為在抽象工廠角色中已經規定了所有可能被建立的產品集合,要支援新種類的產品就意味著要對該介面進行擴充套件,而這將涉及到抽象工廠及其所有子類的修改。
描述由來
如何才能保證乙個類只有乙個例項且這個例項易於被訪問呢?
意圖保證乙個類僅有乙個例項,提供乙個全域性訪問點
適用環境
1.當類只能有乙個例項並且使用者可以從乙個眾所周知的訪問點訪問它
2.該唯一例項通過子類化是可擴充套件的,並且客戶無需更改**就能使用乙個擴充套件例項
描述將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示
要點buider模式的關鍵是將乙個包含有多個元件物件的建立分成若干個步驟,並將這些步驟封裝在乙個稱作buider的介面中
結構包含的角色:
適用環境
1.當系統準備為使用者提供乙個內部結構 複雜
的物件時,就可以使用。
2.分離易變元件和穩定的構建過程
舉例我們如果構建生成一台電腦,那麼我們可能需要這麼幾個步驟(1)需要乙個主機(2)需要乙個顯示器(3)需要乙個鍵盤(4)需要乙個滑鼠)
雖然我們具體在構建一台主機的時候,每個物件的實際步驟是不一樣的,比如,有的物件構建了i7cpu的主機,有的物件構建了i5cpu的主機,有的物件構建了普通鍵盤,有的物件構建了機械鍵盤等。但不管怎樣,你總是需要經過乙個步驟就是構建一台主機,一台鍵盤。對於這個例子,我們就可以使用生成器模式來生成一台電腦,他需要通過多個步驟來生成。
和抽象工廠的區別
抽象工廠是建立一系列產品供客戶**使用,而生成器模式是生成多個產品後組合成乙個產品供客戶**使用。
因此在使用產品系列時,採用抽象工廠模式;而在需將將一系列產品組合成乙個產品時,使用生成器模式
設計模式之建立型模式
設計模式被分成了三大型別 建立型 結構型和行為型。本文介紹一下建立型模式。建立型模式包括抽象工廠模式 建造者模式 工廠方法模式 原型模式和單例模式。好處 1 易於交換產品系列,由於具體工廠類,在乙個應用中只需要在初始化的時候出現一次,這就使得改變乙個應用的具體工廠變得非常容易,它只需要改變具體工廠即...
設計模式之建立型模式
設計模式 是指在軟體開發中,經過驗證的,用於在特定環境下 重複出現的 特定問題的解決方案。創 建型模式 抽象了物件例項化過程,用來幫助建立物件的例項。包括 簡單工廠模式 factory 工廠方法模式 factory method 抽象工廠模式 abstract factory 建造者模式 build...
設計模式之建立型模式
建立型模式主要關注物件的建立過程,將物件的建立過程進行封裝,使客戶端可以直接得到物件,而不用去關心如何建立物件。有五種建立型模式 1.單例模式 singleton 意圖 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。優點 2.工廠方法模式 factorymethod 意圖 1 定義乙個用於...