設計模式之建立型模式 工廠模式

2021-07-22 16:46:04 字數 2836 閱讀 9580

工廠模式(factory pattern)主要用於選擇,根據客戶不同的要求,使用同乙個介面實現不同的功能,然後使用工廠類來判斷使用哪個例項介面,工廠模式是乙個最佳的建立物件的模式。

工廠模式的優點:

1、在呼叫者只需要知道需要建立的名稱就能夠建立乙個物件,而不用知道產品功能的具體實現,簡化了呼叫者的工作。

2、利於擴充套件,當我們需要擴充套件當前型別的功能時,只需要修改工廠類,使工廠類能夠建立當前物件。

工廠模式的缺點 :

每當重新建立乙個新的類時,就需要在工廠類中例項化物件,還需要重新建立乙個類,增加了系統的複雜度,還增加了類之間的依賴性。

1、工廠類的實現模型

shape : 抽象類,提供具體具體的介面,提供給呼叫這呼叫

circle 、square 、rectangle :為shape的派生類,通過繼承實現介面功能,不同的派生類提供不同的功能。

shapefactory :工廠類用於管理例項物件的建立,工廠類根據介面呼叫者提供的需要建立的子類資訊,來建立乙個子類的例項並返回提供給開發者使用。

2、工廠類的c++**實現原始碼 :

#include 

#include

class factorypattern

;class circil :public factorypattern

;void circil::draw()

class square :public factorypattern

;void square::draw()

//工廠管理類

class shapefactory

;factorypattern * shapefactory::getshaper(char *name)

if (name=="circil")

if (name=="square")

return

nullptr;

}void main(void)

執行結果:

當在乙個工廠中具有多個完整的產品且同乙個產品由具有不同的型號,抽象工廠用於管理下層的產品的建立工廠,即抽象工廠是建立工廠上的工廠。抽象工廠的作用就是選擇建立某個產品的管理工廠物件,然後通過工廠管理物件建立具體的例項。

抽象工廠模式的優點:

當乙個產品系列中的不同產品物件例項一起工作時,在客戶端都只是用同乙個例項物件。呼叫者能夠跟簡單的建立多個物件進行協同工作。

抽象工廠模式的缺點;

當需要在產品族中新增加乙個產品是,需要更改工廠類中的**,又要新增類實現**,大大的增加的產品的**量。

1、工廠管理的的是實現模型

shape :作為乙個產品族中的父類提供給抽象工廠管理類呼叫的介面,circle、squar、rectangle作為派生類進行介面類的具體實現。color和shape同樣的功能

shapefactory作為shape產品族工廠管理類,管理派生類物件例項的建立。colo***ctory同shapefactory功能相同。

abstractfactory :抽象類,這裡的介面通過形參獲取外界建立工廠管理類的例項。工廠管理類通過繼承這個類實現介面。

factoryproducer:作為乙個抽象工廠管理類,通過傳遞資訊來確定建立那個工廠管理類。

2、抽象工廠模式的c++實現:

#include 

class factorypattern

;class circil :public factorypattern

;void circil::draw()

class square :public factorypattern

;void square::draw()

class color

;class green :public color

;void green::fuller()

class red :public color

;void red::fuller()

//物件管理工廠基類

class abstractfactory

;//shape工廠管理

class shape***ctory : public abstractfactory

if(name=="circil")

if(name=="square")

return nullptr;

}color*getcolor(char*name)

};//color工廠管理

class colo***ctory :public abstractfactory

if(name=="red")

if(name=="green")

return nullptr;

}factorypattern *getfactorypattern(char * name)

};//管理工廠的工廠

class factoryproducer

if (name=="color")

return nullptr;

}};void main(void)

執行結果為 :

設計模式 建立型模式 工廠模式

簡單工廠模式實現了物件建立和使用的分離。抽象圖表介面 抽象產品類 inte ce chart 柱狀圖類 具體產品類 class histogramchart implements chart public void display 餅狀圖類 具體產品類 class piechart implemen...

設計模式 建立型模式之抽象工廠模式

抽象工廠模式是工廠模式中最抽象的乙個工廠模式,引入的產品組的概念,對它的定義就是將一組相關或相互依賴的物件提供介面,而不需要具體的物件,這個定義是很抽象的。抽象工廠模式包括的角色 1.抽象工廠類 宣告一組用於建立一種產品的的方法 2.具體工廠類 繼承了抽象工廠類,建立一組具體產品的物件 3.抽象產品...

設計模式 1 建立型模式之工廠模式

1簡介 工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改...