C 設計模式之簡單工廠

2021-04-13 22:12:04 字數 1573 閱讀 2489

接觸過設計模式的人大多把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...