class GetResult {
public:
GetResult(){};
virtual ~GetResult(){};
public:
virtual void result(double x,double y) = 0;
};
class ResultAdd : public GetResult
{
public:
ResultAdd(){};
virtual ~ResultAdd(){};
public:
virtual void result(double x,double y)
{
cout <<x<<" + "<<y<<" = "<<(x + y)<< endl;
}
};
class ResultSub : public GetResult
{
public:
ResultSub(){};
virtual ~ResultSub(){};
public:
virtual void result(double x,double y)
{
cout <<x<<" - "<<y<<" = "<<(x - y)<< endl;
}
};
class ResultRide : public GetResult
{
public:
ResultRide(){};
virtual ~ResultRide(){};
public:
virtual void result(double x,double y)
{
cout <<x<<" x "<<y<<" = "<<(x * y)<< endl;
}
};
class ResultDIV : public GetResult
{
public:
ResultDIV(){};
virtual ~ResultDIV(){};
public:
virtual void result(double x,double y)
{
cout <<x<<" / "<<y<<" = "<<(x / y)<< endl;
}
};
class CreateOperate
{
public:
CreateOperate(){};
~CreateOperate(){};
public:
virtual GetResult * CreateResult() = 0;
};
class SimpleCreateOperate : public CreateOperate
{
public:
SimpleCreateOperate(){};
~ SimpleCreateOperate(){};
public:
GetResult * CreateResult()
{
GetResult * temp = NULL;
char qw[] = "";
cout<<"请输入(+、-、*、/):"<<endl;
cin >>qw;
switch (*qw) {
case '+':
temp = new ResultAdd();
break;
case '-':
temp = new ResultSub();
break;
case '*':
temp = new ResultRide();
break;
case '/':
temp = new ResultDIV();
break;
default:
break;
}
return temp;
}
};
//测试
void testSimpleCreate()
{
CreateOperate * createfactory = new SimpleCreateOperate();
GetResult * productCreate = createfactory->CreateResult();
productCreate->result(20,4);
delete productCreate;
productCreate = NULL;
}
int main(int argc, const char * argv[]) {
testSimpleCreate();
return 0;
}
本文介绍了一个简单的工厂模式应用实例——创建一个能够进行加减乘除运算的计算器。通过定义抽象类`GetResult`及其实现类如`ResultAdd`、`ResultSub`等,结合工厂模式来动态创建不同的运算对象,实现了用户输入操作符后能调用相应的计算方法。
1809

被折叠的 条评论
为什么被折叠?



