一、简单工厂模式

来源:互联网 发布:拍淘宝邮费链接安全吗 编辑:程序博客网 时间:2024/04/19 20:19
//Operation.h#ifndef _OPERATION_H_#define _OPERATION_H_class Operation{public:double _numberA;double _numberB;Operation();virtual ~Operation();virtual double GetResult()=0;};class OperationAdd:public Operation{public:double GetResult();};class OperationSub:public Operation{public:double GetResult();};class OperationMul:public Operation{public:double GetResult();};class OperationDiv:public Operation{public:double GetResult();};#endif



//Operation.cpp#include "Operation.h"#include <iostream>using namespace std;Operation::Operation(){_numberA=0;_numberB=0;}Operation::~Operation(){}double OperationAdd::GetResult(){double result=0;result = _numberA+_numberB;return result;}double OperationSub::GetResult(){double result=0;result = _numberA-_numberB;return result;}double OperationMul::GetResult(){double result=0;result = _numberA*_numberB;return result;}double OperationDiv::GetResult(){double result=0;if(_numberB==0.0){cout<<"除数不能为0!"<<endl;return 0;}result = _numberA/_numberB;return result;}

//OperationFactory.h#ifndef _OPERATION_FACTORY_H_#define _OPERATION_FACTORY_H_class Operation;class OperationFactory{public:OperationFactory();virtual ~OperationFactory();Operation* CreateOperate(char operate);};#endif

//OpreationFactory.cpp#include "OpreationFactory.h"#include "Operation.h"#include <iostream>using namespace std;OperationFactory::OperationFactory(){}OperationFactory::~OperationFactory(){}Operation* OperationFactory::CreateOperate(char operate){Operation* pOperate =NULL;switch (operate){case '+':pOperate = new OperationAdd();break;case '-':pOperate = new OperationSub();break;case '*':pOperate = new OperationMul();break;case '/':pOperate = new OperationDiv();break;default:cout<<"无效的运算符"<<endl;return NULL;}return pOperate;}

//main.cpp#include "Operation.h"#include "OpreationFactory.h"#include <iostream>using namespace std;int main(){char operate;double numA;double numB;cout<<"请输入数字1:";cin>>numA;cout<<"请输入运算符:";cin>>operate;cout<<"请输入数字2:";cin>>numB;OperationFactory* pOperFac=new OperationFactory();Operation* pOper= pOperFac->CreateOperate(operate);pOper->_numberA = numA;pOper->_numberB = numB;double result = pOper->GetResult();cout<<numA<<operate<<numB<<"="<<result<<endl;return 0;}


原创粉丝点击