简单工厂设计模式
C++代码:
计算器加减乘除功能实现
计算抽象类及其具体实现各子类定义与实现:
Operator.h定义:
#ifndef OPERATOR_H
#define OPERATOR_H
#include <iostream>
#include <string>
using namespace std;
class Operator
{
public:
double NumberA;
double NumberB;
public:
virtual double GetResult()
{
double result=0;
return result;
}
};
class OperatorAdd:public Operator
{
double GetResult();
};
class OperatorSub:public Operator
{
double GetResult();
};
class OperatorMul:public Operator
{
double GetResult();
};
class OperatorDiv:public Operator
{
double GetResult();
};
#endif
实现:
#include "Operator.h"
double OperatorAdd::GetResult()
{
return NumberA+NumberB;
}
double OperatorSub::GetResult()
{
return NumberA-NumberB;
}
double OperatorMul::GetResult()
{
return NumberA*NumberB;
}
double OperatorDiv::GetResult()
{
if(NumberB!=0)
return NumberA/NumberB;
else
cout << "NumberB can't be 0!" << endl;
}
简单工厂类定义及实现(SimpleFactory.h)
#ifndef SIMPLEFACTORY_H
#define SIMPLEFACTORY_H
#include "Operator.h"
class SimpleFactory
{
public:
static Operator * CreateFactory(char operate)
{
Operator *oper = NULL;
switch(operate)
{
case '+':
oper = new OperatorAdd();
break;
case '-':
oper = new OperatorSub();
break;
case '*':
oper = new OperatorMul();
break;
case '/':
oper = new OperatorDiv();
break;
}
return oper;
}
};
#endif
客户端代码:
#include "SimpleFactory.h"
int main()
{
Operator * op=SimpleFactory.CreateFactory('+');
op->NumberA=1;
op->NumberB=2;
cout << op->GetResult() << endl;
delete op;
return 0;
}