简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
不修改代码的话,是无法扩展的。
- #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
- {
- virtual double GetResult()
- {
- return m_nFirst+ m_nSecond;
- }
- };
- //减法
- class SubOperation: public COperation
- {
- public:
- virtual double GetResult()
- {
- return m_nFirst - m_nSecond;
- }
- };
- //工厂类
- class CCaculatorFactory
- {
- public:
- static COperation * Create(char cOperator);
- };
- COperation * CCaculatorFactory::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 _tmain(int argc, _TCHAR * argv [])
- {
- int a, b;
- cin >> a >> b;
- COperation * op = CCaculatorFactory::Create('-');
- op->m_nFirst = a;
- op->m_nSecond = b;
- cout << op->GetResult() << endl;
- return 0;
- }