Factory 工廠模式

2021-08-15 07:49:06 字數 2426 閱讀 2743

工廠模式有3種。以下的示例**都省略了建構函式與析構函式。

一.     簡單工廠模式

簡單工廠模式就是只有乙個工廠,所有的產品都有該工廠生產。每一種產品都有乙個對應的type。當需要某種產品時,將該產品的type傳給工廠,然後工廠即會返回該產品。

這樣意味著工廠內部必須針對type作判斷,也就是使用乙個switch語句來根據傳入的type,決定建立哪一種產品。

當產品種類很多時,這個switch會非常龐大。

1.    定義產品

class abstractproduct

;class producta :public abstractproduct

;class productb :public abstractproduct

;

2.    定義工廠

class abstractfactory

;class ******factory :public abstractfactory

;abstractproduct* ******factory::createproduct(int type)

return temp;

}

3.    使用工廠

void main()

二.     工廠方法模式

工廠方法模式會定義乙個抽象工廠,該抽象工廠規定了產生產品的介面。

然後由抽象工廠,針對於每一種產品,單獨派生對應的工廠。這樣,每一種產品都有自己專門的工廠進行生產。即產品與工廠一一對應。

當要生產某種產品時,需要呼叫對應工廠的生產函式。

這樣,意味著當產品種類非常多的時候,工廠也會非常多。

1.    定義產品

class abstractproduct

;class producta :public abstractproduct

;class productb :public abstractproduct

;

2.    定義工廠

class abstractfactory

;class factorya :public abstractfactory

;class factoryb :public abstractfactory

;abstractproduct* factorya::createproduct()

abstractproduct* factoryb::createproduct()

3.    使用工廠

void main()

三.     抽象工廠模式

抽象工廠模式折中了簡單工廠模式與抽象工廠模式。

抽象工廠模式的產品是分類的,某一類產品有多種,那麼針對於這一類產品,構造乙個工廠。這個工廠可以生產這一類產品中的任何一種。

一般來說,這類工廠用於產品適配的情況。如windows下需要生產乙個視窗,linux下也需要生產乙個視窗,那麼就可以建立兩個工廠,分別負責不同平台下視窗的產生。但是這樣也意味著,若新增一種產品,則每個工廠都要針對該產品進行修改。

1.    定義產品

class abstractproducta

;class producta_1 :public abstractproducta

;class producta_2 :public abstractproducta

;class abstractproductb

;class productb_1 :public abstractproductb

;class productb_2 :public abstractproductb

;

2.    定義工廠

class abstractfactory

;class factory1 :public abstractfactory

;class factory2 :public abstractfactory

;abstractproducta* factory1::createproducta()

abstractproductb* factory1::createproductb()

abstractproducta* factory2::createproducta()

abstractproductb* factory2::createproductb()

3.    使用工廠

void main()

factory工廠模式

1.factory模式 兩個重要的功能 1 定義建立物件的介面,封裝了物件的建立 2 使得具體化類的工作延遲到了子類中。factory模式僅僅侷限於一類類 就是說product是一類,有乙個共同的基類 如果我們要為不同類的類提供 乙個物件建立的介面,那就要用abstractfactory了。我們經常...

工廠模式Factory

工廠方法模式完全符合設計模式原則,降低了物件之間的耦合度,而且,工廠方法模式依賴於抽象的架構,將例項化的任務交由了子類實現.比如你想要出門,每次出行你都要根據天氣情況選擇出行方式,如果下雨天,就開自己的私家車,如果晴天就出門坐公車。那麼這裡可以抽取出乙個基類出來。車的基類 public abstra...

工廠模式(Factory)

工廠模式實現了建立者和呼叫者的分離 工廠模式分類 1.簡單工廠模式 2.工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類 物件導向設計的基本原則 ocp 開閉原則,open closed principle 乙個軟體的實體應當對擴充套件開放,對...