簡單工廠模式應該是所有設計模式中最簡單,也最基礎的一種模式,以下是乙個簡單的採用工廠模式寫乙個加減法的計算器。
1、抽象介面類——依賴倒轉原則(高層和底層都要依賴於抽象,針對介面程式設計)
class ioperation
virtual ~ioperation() {}
virtual void setnum(int nnuml = 0, int nnumr = 0)
virtual int calculateresult() = 0;
protected:
int m_nnuml, m_nnumr;
};
注:m_nnuml, m_nnumr申明為protected,是為了讓繼承類中能夠使用,同時又保持其訪問的私有性,這和c#是不一樣的地方
2、介面實現物件類——加法、減法類(乘除法就省略了,類似)
class coperation_add : public ioperation
};class coperation_dec : public ioperation
};
3、工廠類——生成抽象物件
class cclassfactory
~cclassfactory() {}
ioperation* createobject(char coperation)
case '-':
break;
} return pocoperation;
}};
4、使用工廠生產物件
void test()
}
簡單工廠模式的好處在於將具體物件的產生過程進行了封裝,使用者不需要關係這個物件怎麼來的,只需要just use it,同時有了物件工廠這個中間人,可以根據需要替換掉相應的物件,使用更加靈活。但簡單工廠模式中,判斷該產生何種物件時,採用了switch結構,如果需要改動或者增減物件時,需要改動switch結構的**,不符合開放—封閉原則,即函式、類不可以修改,只能擴充套件。如何解決此問題,請看下回分解(大話設計模式c++版——表驅動法改造簡單工廠模式)
大話設計模式 簡單工廠模式
學習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...
大話設計模式 簡單工廠模式
乙個 概念 簡單工廠模式 factory pattern 它屬於建立模式,又稱靜態工廠方法模式 static factorymethod pattern 可是不屬於23gof設計模式之中的乙個。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。二 uml圖 簡單工廠主要分為三個角色 工廠 c...