定義乙個工廠類,他可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態方法,因此簡單工廠模式又被稱為靜態工廠方法模式,它屬於類建立型模式。
product:抽象產品角色:是工廠類所建立的所有物件的父類。
concreteproduct:具體產品角色:是簡單工廠模式的建立目標,所有被建立的物件都充當這個角色的某個具體類的例項。
factory:工廠角色:是簡單工廠模式的核心,負責實現建立所有產品例項的內部邏輯;工廠類可以直接被外界直接呼叫,建立所需的產品物件;在工廠類中提供了靜態的工廠方法,它的返回型別為抽象產品型別product.
a.工廠類包含必要的邏輯判斷,可以決定在什麼時候建立哪乙個產品類的例項,客戶端可以免除直接建立產品物件的職責,而僅僅消費產品,簡單工廠模式實現了物件建立和使用的分離。
b.客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜類名,通過簡單工廠模式可以在一定程度上減少使用者的記憶。
c.通過引入配置檔案,可以在不修改任何客戶端**的情況下,更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。即在客戶端中通過讀取配置檔案中的產品類名或對應的引數來生成所需的產品例項。
a.由於工廠類中集中了所有的產品的建立邏輯,職責過重,一旦不能正常工作,整個系統都要受到影響。
b.使用簡單工廠模式勢必會增加系統中類的個數,增加了系統的複雜度和理解難度。
c.系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時 ,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。
d.簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。
a.工廠類負責建立的物件比較少,由於建立的物件較少,不會造成工廠方法中的業務邏輯過於複雜。
b.客戶端只知道傳入工廠類的引數,對於如何建立物件並不關心的情況。
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...
設計模式(簡單工廠模式 工廠模式 抽象工廠模式)
當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...
設計模式 簡單工廠設計模式
請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...