設計模式之簡單工廠模式(C 語言描述)

2022-03-22 22:21:04 字數 1412 閱讀 6616

嚴格意義上來說,簡單工廠模式並不屬於gof的23種設計模式,但是它是學習其他工廠模式的基礎和前提條件。理解了簡單工廠模式,學習工廠方法模式和抽象工廠模式會比較容易一些。

簡單工廠模式的定義

定義乙個工廠類,他可以根據不同的引數返回不同類的例項。通常情況下,被建立的類的例項通常都具有共同的父類。

簡單工廠模式又可以稱之為靜態工廠方法模式,因為建立物件例項的方法通常都是靜態方法。

在簡單工廠模式中,只需要記住一點。乙個簡單的引數可以即可獲得所需的物件例項。

簡單工廠模式的uml圖如下:

簡單工廠模式包含三個角色:

1、工廠角色(factory)該類是簡單工廠的核心,我們所需要的物件例項就是這個類幫我們建立的,它裡面有乙個靜態方法getproduct(string producttype),我們通過傳入產品型別(producttype)來得到我們想要的產品。

2、抽象產品角色(abstractproduct):該類是所有產品的父類。它可以是介面或者抽象類。只有這樣我們才能給工廠的getproduct(string producttype)方法定義返回值。

3、實體產品(concreteproducta,concreteproductb,concreteproductc):這些類是簡單工廠最終要建立的目標,也是客戶端最終想要的物件例項。

現在來假設一種場景,我們開發過程中,肯定會用到按鈕,圓形按鈕、正方形按鈕、矩形按鈕等等,在程式的很多地方我們都可能會復用這些按鈕。我們可以通過乙個簡單工廠來幫助我們建立這些按鈕。

首先我們要宣告工廠要生產的產品(各種按鈕)類

public class button

}public class roungbutton:button

}public class squarebutton:button

}public class rectanglebutton:button

}

其次是我們的(靜態工廠類)

public class buttonfactory

return btnobj;}}

在此處還有一些要說明的要點。

簡單工廠類幫助我們建立的是一類產品,這一類產品有乙個共同的父類,這個父類是作為工廠方法的返回值來使用的。如果沒有這個共同的父類,我們的程式就需要用object作為返回值,然後在程式中進行強制轉換,這個明顯是非常不友好的程式設計。而作為一名程式設計師,在程式中進行大量的裝箱和拆箱操作是比較耗費效能的,良好的程式設計習慣中,也應該儘量減少裝箱拆箱的操作。

然後我們就可以在控制台除錯我們的程式了

static void main(string args)//檔名的修改

程式的執行結果如下圖:

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

專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。它又稱為靜態工廠方法模式,屬於類的建立型模式。簡單工廠模式的uml類圖 簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類 這些產品類繼承自乙個父類或介面 的例項。該模式中包含的角色及其職責 工廠 cr...

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

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

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

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