工廠模式有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 乙個軟體的實體應當對擴充套件開放,對...