簡單工廠模式 (****** factory)又叫靜態工廠方法(static factory method)模式。
簡單工廠模式通常是定義乙個工廠類,這個類可以根據不同變數返回不同類的產品例項。
簡單工廠模式是一種物件建立型模式(
可參考設計模式 建立型模式
)。但是簡單工廠模式不屬於23種gof設計模式之一。
如何實現乙個具有加減乘除基本功能的計算器?
對於這四種運算來說,都需要兩個運算元,差別僅在於返回的結果不同。
由此,我們可以抽象化它們的共性,提煉出乙個父類。這個類中包含兩個運算元,乙個返回結果方法,這個方法期望在子類中得以實現。
以下通過具體**來說明。
圖-簡單工廠模式結構圖
product (operation): 產品角色,簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
//product角色,所有例項所共有的公共介面
abstract
class operation
concreteproduct組: 具體產品角色,實現 product 中的介面。
//concreteproduct 角色,實現 product 中的介面
class add
extends operation }
//concreteproduct 角色,實現 product 中的介面
class sub
extends operation }
//concreteproduct 角色,實現 product 中的介面
class mul
extends operation }
//concreteproduct 角色,實現 product 中的介面
class div
extends operation
return numa / numb; }
} factory (operationfactory): 工廠角色,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。
//工廠角色,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯
class operationfactory
return oper; }
} 測試**
public
class ******factorypattern }
執行結果
10 + 3 = 13
簡單工廠模式的工廠類是整個模式的關鍵。其中包含了必要的邏輯判斷,根據外部資訊,決定究竟應該建立哪個具體類的物件。
通過使用簡單工廠模式,使用者無需了解物件如何建立的,只要傳入必要資訊就可以了。
工廠類集中了所有例項的建立邏輯,違背了高內聚責任分配原則。
隨著系統中具體產品類不斷增多,勢必要不斷修改工廠類,不易維護和擴充套件。同時,這也違背了開放封閉原則。
本文屬於設計模式系列
。
簡單工廠模式屬於工廠模式家族,歡迎參考閱讀工廠方法模式
、抽象工廠方法模式
。
《大話設計模式》
《headfirst設計模式》
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 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...