简单工厂模式C++实现
例子来源于《大话设计模式》第一章——实现一个计算器
#include<iostream>
#include<string>
using namespace std;
class albase {
private:
int A,B;
public:
virtual int getAns() {};
void setA(int a) {
A=a;
}
void setB(int b) {
B=b;
}
int getA() {
return A;
}
int getB() {
return B;
}
};
class add:public albase {
public:
int getAns() {
return this->getA()+this->getB();
}
};
class sub:public albase {
public:
int getAns() {
return this->getA()-this->getB();
}
};
class mul:public albase {
public:
int getAns() {
//printf("here\n");
return (this->getA())*(this->getB());
}
};
class div:public albase {
public:
int getAns() {
if(this->getB()==0) {
//printf("分母不能为0\n");
return 0;
}
return this->getA()/this->getB();
}
};
class OF {
public:
albase* createOperate(char operate) {
albase* oper;
switch(operate) {
case '+':
oper = new add();
break;
case '-':
oper = new sub();
break;
case '*':
oper = new mul();
break;
case '/':
oper = new div();
break;
}
return oper;
}
};
int main() {
albase* algo;
OF oper;
algo=oper.createOperate('*');
(*algo).setA(2);
(*algo).setB(8);
cout<<algo->getAns()<<endl;
return 0;
}