主要用於創建對象。新添加類時不會影響以前的系統代碼。原理是創建一個工廠類,根據輸入條件在其內部產生不同的類,再根據不同類的virtual函數得到不同結果。
代碼實現:
#include<iostream> using namespace std; //基類 class COperation { public: int m_nFirst; int m_nSecond; virtual double GetResult() { double dResult=0; return dResult; } }; //加法 class AddOperation:public COperation { public: virtual double GetResult() { return m_nFirst+m_nSecond; } }; //減法 class SubOperation:public COperation { public: virtual double GetResult() { return m_nFirst-m_nSecond; } }; //工廠類 class CCalculatorFactory { public: static COperation* Create(char cOperator); }; COperation* CCalculatorFactory::Create(char cOperator) { COperation* oper; switch(cOperator) { case'+': oper=new AddOperation(); break; case'-': oper=new SubOperation(); break; default: oper=new AddOperation(); break; } return oper; } //客戶端 int main() { int a,b; cout<<"請輸入兩個操作數,空格分開:"<<endl; cin>>a>>b; COperation* op=CCalculatorFactory::Create('-'); op->m_nFirst=a; op->m_nSecond=b; cout<<op->GetResult()<<endl; return 0; }