设计模式之简单工厂模式,C++实现
2012-11-29 09:38
453 查看
原创http://blog.csdn.net/iuhsihsow
只上图和代码吧
![](http://img.my.csdn.net/uploads/201211/29/1354153362_1947.png)
#include "stdafx.h"
#include <windows.h>
enum EOperator
{
ADD_OPER,
SUB_OPER
};
class MathOperator
{
public:
MathOperator(){;}
virtual ~MathOperator(){;}
void SetMember(int first, int second)
{
m_nFirst = first;
m_nSecond = second;
}
virtual int GetResult() = 0;
protected:
int m_nFirst;
int m_nSecond;
};
class AddOperator:public MathOperator
{
public:
int GetResult()
{
return m_nFirst + m_nSecond;
}
};
class SubOperator:public MathOperator
{
public:
int GetResult()
{
return m_nFirst - m_nSecond;
}
};
class OperatorFactory
{
public:
MathOperator *CreateOperator(EOperator eOper)
{
MathOperator *pOper = NULL;
switch (eOper)
{
case ADD_OPER:
pOper = new AddOperator();
break;
case SUB_OPER:
pOper = new SubOperator();
break;
}
return pOper;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
OperatorFactory OFactrory;
MathOperator *pOper = OFactrory.CreateOperator(ADD_OPER);
pOper->SetMember(2, 3);
int nResult = pOper->GetResult();
if (pOper)
{
delete pOper;
pOper = NULL;
}
return 0;
}
只上图和代码吧
![](http://img.my.csdn.net/uploads/201211/29/1354153362_1947.png)
#include "stdafx.h"
#include <windows.h>
enum EOperator
{
ADD_OPER,
SUB_OPER
};
class MathOperator
{
public:
MathOperator(){;}
virtual ~MathOperator(){;}
void SetMember(int first, int second)
{
m_nFirst = first;
m_nSecond = second;
}
virtual int GetResult() = 0;
protected:
int m_nFirst;
int m_nSecond;
};
class AddOperator:public MathOperator
{
public:
int GetResult()
{
return m_nFirst + m_nSecond;
}
};
class SubOperator:public MathOperator
{
public:
int GetResult()
{
return m_nFirst - m_nSecond;
}
};
class OperatorFactory
{
public:
MathOperator *CreateOperator(EOperator eOper)
{
MathOperator *pOper = NULL;
switch (eOper)
{
case ADD_OPER:
pOper = new AddOperator();
break;
case SUB_OPER:
pOper = new SubOperator();
break;
}
return pOper;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
OperatorFactory OFactrory;
MathOperator *pOper = OFactrory.CreateOperator(ADD_OPER);
pOper->SetMember(2, 3);
int nResult = pOper->GetResult();
if (pOper)
{
delete pOper;
pOper = NULL;
}
return 0;
}
相关文章推荐
- 设计模式C++实现_2_简单工厂模式
- 我所理解的设计模式(C++实现)——简单工厂模式(Simple Factory Pattern)
- 设计模式---简单工厂模式(c++实现)
- 我看设计模式系列(1)--简单工厂模式【设计模式C++实现】
- C++实现设计模式之 — 简单工厂模式
- 通过例子学设计模式之--简单工厂模式以及使用场景说明(C++实现)
- 设计模式C++实现-简单工厂模式、工厂方法模式、抽象工厂模式
- [Gof设计模式]简单工厂模式和工厂模式的C++实现
- 设计模式之 简单工厂模式(C++实现)
- 设计模式之C++实现(一)---简单工厂模式(Simple Factory)
- 设计模式之 简单工厂模式(C++ 模板实现)
- 设计模式之简单工厂模式(C++实现)
- 设计模式-简单工厂模式 C++实现
- 简单工厂模式的C++实现【设计模式】
- 简单工厂模式的C++实现——设计模式学习(1)
- 《Head First 设计模式》例子的C++实现(适配器模式)
- 设计模式C++实现(2)——策略模式
- 设计模式之装饰者模式(c++实现)
- 设计模式---备忘录模式(C++实现)
- 设计模式C++实现(4)——单例模式