C 設計模式之簡單工廠模式

2021-06-04 07:47:08 字數 1060 閱讀 1264

專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。它又稱為靜態工廠方法模式,屬於類的建立型模式。

簡單工廠模式的uml類圖:

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

該模式中包含的角色及其職責

工廠(creator)角色

簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。

抽象(product)角色

簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

具體產品(concrete product)角色

是簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

一般來講它是抽象產品類的子類,實現了抽象產品類中定義的所有介面方法。

簡單工廠模式的特點:

簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用時可以直接根據工廠類去建立所需的例項,而無需了解這些物件是如何建立以及如何組織的。有利於整個軟體體系結構的優化。

不難發現,簡單工廠模式的缺點也正體現在其工廠類上,由於工廠類集中了所有例項的建立邏輯,所以「高內聚」方面做的並不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。

例項**如下:

#include using namespace std;

//定義抽象類

class canimal

;//定義具體類

class cfish : public canimal

c 設計模式之簡單工廠模式

設計模式的作用就是不同作用的 的區分管理,每乙個區塊的 只做好自己的事情。拿人體來舉例,大腦是所用活動的控制中樞。分別控制軀體,消化系統,免疫系統,神經系統等。那麼首先就需要將各個系統分割開來,在需要運動的時候通知軀體運動,需要消化的時候通知消化系統去消化 等等。再往細分,大腦給軀體發出乙個喝水的命...

c 設計模式之簡單工廠模式

簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端 使用工廠類 的選擇條件動態例項化相關的類,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。對於動態例項化,我們可以借助智慧型指標來完成對物件的管理。如下 include include using n...

C 設計模式之簡單工廠模式

簡單工廠模式按照設計模式型別分的話是屬於建立型模式,他是工廠模式中最簡單的一種,他不屬於gof 23中設計模式之一,但是是簡單實用的。他是有乙個工廠物件來決定建立哪一種物件的例項。類圖和呼叫方法 例子 優點 外界只要傳入類的名字或者識別符即可,不需要關心具體建立過程,只顧 消費 就可以了。各有各的指...