在軟體系統中,經常面臨著建立物件的工作;由於需求的變化, 需要建立的物件的具體型別經常變化。
如何應對這種變化?如何繞過常規的物件建立方法(new),提供一 種「封裝機制」來避免客戶程式和這種「具體物件建立工作」的緊耦合?
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠模式使得乙個類的例項化延遲(目的:解耦, 手段:虛函式)到子類。我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。
根據產品是具體產品還是具體工廠可分為簡單工廠模式和工廠方法模式。
class
isplitter};
class
binarysplitter
:public isplitter};
class
txtsplitter
:public isplitter};
class
picturesplitter
:public isplitter};
class
videosplitter
:public isplitter
};
class
mainform
:public form
};
例子中建立需要new具體類。
該模式對物件建立管理方式最為簡單,因為其僅僅簡單的對不同類物件的建立進行了一層薄薄的封裝。該模式通過向工廠傳遞型別來指定要建立的物件。
class
isplitter};
class
binarysplitter
:public isplitter};
class
txtsplitter
:public isplitter};
class
picturesplitter
:public isplitter};
class
videosplitter
:public isplitter
};
// 簡單工廠
工廠方法模式將生成具體產品的任務分發給具體的產品工廠。
// 抽象類
class
isplitter};
// 工廠基類
class
splitte***ctory
};
// 具體類
class
binarysplitter
:public isplitter};
class
txtsplitter
:public isplitter};
class
picturesplitter
:public isplitter};
class
videosplitter
:public isplitter};
// 具體工廠
class
binarysplitte***ctory
:public splitte***ctory};
class
txtsplitte***ctory
:public splitte***ctory};
class
picturesplitte***ctory
:public splitte***ctory};
class
videosplitte***ctory
:public splitte***ctory
};
class
mainform
:public form
void
button1_click()
};
缺點:每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。 23種設計模式 工廠模式
作用 實現了建立者和呼叫者分離 詳細分類 簡單工廠模式 工廠方法模式 抽象工廠模式 工廠模式要滿足的原則 開閉原則 對擴充套件開放,對修改關閉 依賴倒置原則 面向介面程式設計,不要面向實現程式設計。迪公尺特法則 只與你的直接朋友交談,不跟陌生人說話。核心本質 例項化物件不適用new,用工廠方法代替 ...
23種設計模式之 工廠模式
android中,工廠模式分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式。一.簡單工廠模式。定義 簡單工廠模式又叫靜態方法模式 因為工廠類定義了乙個靜態方法 簡單工廠模式可以理解為負責生產物件的乙個類,稱為 工廠類 我們主要講的就是簡單工廠模式,其他兩種也是簡單工廠模式的衍生 我們在專案中經常使...
23種設計模式之工廠模式
基本介紹 簡單工廠模式定義了乙個工廠類,他可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類,簡單工廠模式中用於被建立例項的方法通常為靜態 static 方法,因此簡單工廠模式又被成為靜態工廠方法 特點需要什麼,只需要傳入乙個正確的引數,就可以獲取所需要的物件,而無需知道其實現過程...