一、場景及uml圖
注意一點:factory與concreteproduct二者的關係是依賴關係,因為其是作為乙個方法的引數出現在factory中。
二、包含的角色
簡單工廠模式包含三個角色:
(1)工廠類factory:工廠類是用來製造產品的。因此,在factory中有乙個用於製造產品的create函式或者generate函式之類的函式。這個函式能夠根據「識別符號」的不同生成不同的concreteproduct,當然這些concreteproduct都是繼承自abstractproduct的。
(2)抽象產品類abstractproduct:抽象產品是從其他具體產品抽象出來的。抽象產品類只有乙個。
(3)具體產品類concreteproduct:具體產品類繼承自抽象產品類,可以有多個。當需要增加新的產品的時候就增加乙個繼承自抽象產品類的具體產品類即可。
三、優勢:
實現了松耦合,當需要增加一種新產品(在大話設計模式中,例子是 運算operation),只需要做兩點改動:
(1)增加乙個繼承自抽象產品(抽象的運算)的具體產品(一種具體的運算);
(2)在工廠類中,switch中,增加一種根據識別符號產生新運算的case即可。
四、實現
#include #include using namespace std;
//抽象產品類
class operation
double getb()
void seta(double number)
void setb(double number)
virtual double getresult() };
//下面是四種具體產品類
class operationadd:public operation};
class operationsub:public operation};
class operationmul:public operation};
class operationdiv:public operation};
//工廠類
class operationfactory
return oper;
}};//客戶端
大話設計模式(1)簡單工廠模式
簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。請看uml圖 簡單工廠...
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...
大話設計模式 簡單工廠模式
最近在學習 大話設計模式 這本書,此本生動易動,其中有一些例子,我把 分寫如下。大話設計模式 無錯便是優?簡單工廠模式 下面以 乙個計算器的實現 operation運算類 public abstract class operation public void setnumbera public do...