简单工厂模式
大部分都是大话设计模式上的案例,工厂方法对着简单工厂写的,和书上案例不一致
#include<iostream>
using namespace std;
//简单工厂模式
//抽象类
class AbstractOperation {
public:
virtual int GetResult() = 0;
void Get(int _NumberA,int _NumberB){
this->NumberA = _NumberA;
this->NumberB = _NumberB;
}
protected:
int NumberA = 0;
int NumberB = 0;
};
//具体实现类
class OperationAdd : public AbstractOperation {
public:
virtual int GetResult() {
return NumberA + NumberB;
}
};
class OperationSub : public AbstractOperation {
public:
virtual int GetResult() {
return NumberA - NumberB;
}
};
class OperationMul : public AbstractOperation {
public:
virtual int GetResult() {
return NumberA * NumberB;
}
};
class OperationDiv : public AbstractOperation {
public:
virtual int GetResult() {
return NumberA / NumberB;
}
};
//工厂类-->扩展时需要修改源代码!!
class OperationFactory {
public:
static AbstractOperation* Operated(char _str) {
// (string str)
switch (_str) //(_str[0])
{
case '+':
return new OperationAdd;
case '-':
return new OperationSub;
case '*':
return new OperationMul;
case '/':
return new OperationDiv;
default:
break;
}
}
};
void test1() {
OperationFactory* factory = new OperationFactory;
AbstractOperation* operate = factory->Operated('*'); //string-->("*")
operate->Get(5, 6);
cout << operate->GetResult() << endl;
delete operate;
delete factory;
}
int main(void)
{
test1();
return 0;
}