接觸過設計模式的人大多把gof奉為經典,設計模式被分為建立型、結構型和行為型三大類。簡單工廠和抽像工廠都屬於建立型,以下是我對簡單工廠模式的理解。
簡單工廠又叫做靜態工廠方法模式。就是由乙個工廠類根據傳入的參量決定建立出哪一種產品類的例項。一般涉及到三種角色:
抽象產品角色:擔任這個角色的類是由工廠方法模式所建立的物件的父類,或她們共同擁有的介面。一般由介面或抽象類實現。
具體產品角色:工廠方法模式所建立的任何物件都是這個角色的例項,由具體類實現。
就如我們去買手機一樣,手機店就是工廠,手機本身的定義是乙個抽象產品的角色,我們來到手機店,告訴服務員我們要買的手機型號,這裡服務員扮演著乙個工廠裡的create方法,他根據我們所說的型號拿出我們需要的具體的手機例項。
簡單工廠模式優缺點:模式的核心是工廠類,這個類負責產品的建立,而客戶端可以免去產品建立的責任,這實現了責任的分割。但由於工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的原始碼。
下面是乙個具體的關於簡單工廠的例項。
以園丁種植水果為例討論該模式的具體實現:
fruit 水果介面,規定水果具有的一些共同特性
strawberry 士多啤梨類 派生自fruit介面
fruitgardener 園丁類 負責士多啤梨與蘋果的建立工作。
當client要建立水果(蘋果或士多啤梨物件)的時候呼叫園丁類的factory方法建立:
**如下:
fruit.cs
namespace ******_factory }
namespace ******_factory
#region fruit 成員
public void grow()
public void harvest()
public void plant()
#endregion
} }
strawberry.cs
namespace ******_factory
#region fruit 成員
public void grow()
public void harvest()
public void plant()
#endregion
} }
fruitgardener.cs
namespace ******_factory
else if(which.equals ("strawberry"))
else }
} }
client.cs
using system;
namespace ******_factory }
} 輸出如下:
strawberry is growing.......
strawberry is harvesting.......
strawberry is planting.......
本文**
C 設計模式之簡單工廠模式
專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。它又稱為靜態工廠方法模式,屬於類的建立型模式。簡單工廠模式的uml類圖 簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類 這些產品類繼承自乙個父類或介面 的例項。該模式中包含的角色及其職責 工廠 cr...
c 設計模式之簡單工廠模式
設計模式的作用就是不同作用的 的區分管理,每乙個區塊的 只做好自己的事情。拿人體來舉例,大腦是所用活動的控制中樞。分別控制軀體,消化系統,免疫系統,神經系統等。那麼首先就需要將各個系統分割開來,在需要運動的時候通知軀體運動,需要消化的時候通知消化系統去消化 等等。再往細分,大腦給軀體發出乙個喝水的命...
c 設計模式之簡單工廠模式
簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端 使用工廠類 的選擇條件動態例項化相關的類,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。對於動態例項化,我們可以借助智慧型指標來完成對物件的管理。如下 include include using n...