設計模式學習(一) 簡單工廠模式

2021-09-11 02:09:15 字數 2255 閱讀 5575

這是個人學習程式設計模式的系列學習筆記第一篇。

採用qt creator進行編寫,但盡量採用c++基礎語法。

嚴格來說,簡單工廠模式並不是23中設計模式中的一種。但學習簡單工廠模式,對了解其他工廠方法,抽象工廠有幫助。

假設有乙個製作點心的工廠,可以生產各種蛋糕、餅乾、麵包等點心。要設計一套系統,可以實現自動拌料,自動烘焙。這個場景比較適合採用簡單工廠模式。

蛋糕、餅乾、麵包所用原料類似,製作工藝類似,可抽象乙個點心類作為基類。

基類實現備料功能(這裡假定需要的原料都是麵粉、水、糖、酵母),按輸入進行備料混合,然後烘焙。各種糕點具體的製作方法不同,根據不同的製作工藝進行烘焙。在基類實現乙個獲取烘焙方法的純虛函式作為烘焙方法,在子類實現具體的烘焙方法。

定義乙個工廠類,用於根據使用者的選擇,建立不同的生產線生產具體種類的糕點。

基類——dessert

dessert.h

class

dessert

;

dessert.cpp

#include "dessert.h"

#include

using namespace std;

dessert:

:dessert()

void dessert:

:getmaterial

(int flour, int water, int sugar, int yeast)

void dessert:

:bake()

子類——biscuit

biscuit.h

#include 

class

biscuit

:public dessert

;

biscuit.cpp

biscuit:

:biscuit()

char* biscuit:

:getbakemethod()

子類——bread

bread.h

#include 

class

bread

:public dessert

;

bread.cpp

#include "bread.h"

bread:

:bread()

char *bread:

:getbakemethod()

子類——cake

cake.h

#include 

class

cake

:public dessert

;

cake.cpp

#include "cake.h"

cake:

:cake()

char *cake:

:getbakemethod()

工廠類——factory

factory.h

#include 

class

factory

;

factory.cpp

#include "factory.h"

#include "biscuit.h"

#include "bread.h"

#include "cake.h"

factory:

:factory()

dessert *factory:

:creatbakingkind

(int kind)

return

this

->dessert;

}factory::~

factory()

介面

工廠設計模式一 簡單工廠模式

工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...

工廠設計模式(一) 簡單工廠模式

工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...

設計模式 一 工廠模式 簡單工廠

以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...