可維護、可重複、可擴充套件。
簡單工廠模式包含三個角色:
工廠類factory:工廠類是用來製造產品的。因此,在factory中有乙個用於製造產品的create函式或者generate函式之類的函式。這個函式能夠根據「識別符號」的不同生成不同的concreteproduct,當然這些concreteproduct都是繼承自abstractproduct的。
抽象產品類abstractproduct:抽象產品是從其他具體產品抽象出來的。抽象產品類只有乙個。
具體產品類concreteproduct:具體產品類繼承自抽象產品類,可以有多個。當需要增加新的產品的時候就增加乙個繼承自抽象產品類的具體產品類即可。
實現了松耦合,當需要增加一種新產品(在大話設計模式中,例子是 運算operation),只需要做兩點改動:
增加乙個繼承自抽象產品(抽象的運算)的具體產品(一種具體的運算);
在工廠類中,switch中,增加一種根據識別符號產生新運算的case即可。
使用物件導向語言實現乙個計算器控制台程式,要求輸入兩個數和運算子,得到結果;
*/#include#includeusing std::cout;
using std::endl;
using std::cin;
using std::string;
class operator
void setnumb(double num)//設定_numb的值
double getnuma()//獲取_numa的值
double getnumb()//獲取_numb的值
virtual double getresult()//虛函式,用於計算
};//加
class operatoradd :public operator
};//減
class operatorsub :public operator
};//乘
class operatormul :public operator
};//除
class operatordiv :public operator
};//簡單工廠模式例項化物件類
class oprato***ctory
return ope;
}};int main()
catch (...)
system("pause");
return 0;
}運算結果1:
請輸入【數字1】:23.4
請輸入【操作符】:+
請輸入【數字2】:45.6
result = 69
請按任意鍵繼續. . .
運算結果2:
請輸入【數字1】:23.5
請輸入【操作符】:/
請輸入【數字2】:0
您輸入的運算數字有問題
請按任意鍵繼續. . .
簡單工廠模式需要客戶端認識兩個類。
定義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類。
型別:建立類模式
類圖:
}工廠模式:首先需要說一下工廠模式。工廠模式根據抽象程度的不同分為三種:簡單工廠模式(也叫靜態工廠模式)、本文所講述的工廠方法模式、以及抽象工廠模式。工廠模式是程式設計中經常用到的一種模式。它的主要優點有:
工廠方法模式:
通過工廠方法模式的類圖可以看到,工廠方法模式有四個要素:
適用場景:
不管是簡單工廠模式,工廠方法模式還是抽象工廠模式,他們具有類似的特性,所以他們的適用場景也是類似的。
典型應用
要說明工廠模式的優點,可能沒有比組裝汽車更合適的例子了。場景是這樣的:汽車由發動機、輪、底盤組成,現在需要組裝一輛車交給呼叫者。假如不使用工廠模式,**如下:
class engine
}class underpan
}class wheel
}public class client
}
可以看到,呼叫者為了組裝汽車還需要另外例項化發動機、底盤和輪胎,而這些汽車的元件是與呼叫者無關的,嚴重違反了迪公尺特法則,耦合度太高。並且非常不利於擴充套件。另外,本例中發動機、底盤和輪胎還是比較具體的,在實際應用中,可能這些產品的元件也都是抽象的,呼叫者根本不知道怎樣組裝產品。假如使用工廠方法的話,整個架構就顯得清晰了許多。
inte***ce ifactory
class factory implements ifactory
}public class client
}
使用工廠方法後,呼叫端的耦合度大大降低了。並且對於工廠來說,是可以擴充套件的,以後如果想組裝其他的汽車,只需要再增加乙個工廠類的實現就可以。無論是靈活性還是穩定性都得到了極大的提高。
說白了,就是建立乙個工廠類,將各個實現類的的實現封裝起來,從而對客戶端來說,簡單易用!
大話設計模式C 版本 01 簡單工廠模式
簡單工廠模式 根據不同的條件,使用乙個工廠類來建立不同類的物件的一種設計模式,用來解決建立物件的問題。有幾個不同的類,且這幾個類有共同的父類 在不同的條件下用這幾個類創造不同的物件 寫乙個抽象類作為不同條件的幾個類的父類,例如寫乙個 操作符類 作為 加法類 和 減法類 的父類 偽 class ope...
《大話設計模式》C 實現 01 簡單工廠模式
3.怎樣使用簡單工廠模式?4.例項 當出現批量化的產品時,使用單獨的類建立每個產品,實現去例項化物件。1 降低了客戶與具體實現的耦合 相較不使用簡單工廠而言 封裝了細節,客戶只需呼叫工廠介面,不必關心如何建立產品,只關心使用產品 1 工廠類對產品的耦合較強 集中了所有產品的建立邏輯,模組與模組之間耦...
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...