簡單工廠設計模式
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;
}