五、工厂模式
来源:互联网 发布:linux新建文档命令 编辑:程序博客网 时间:2024/04/26 15:26
工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。
//Operation.h#ifndef _OPERATION_H_#define _OPERATION_H_class Operation{public:virtual double GetResult()=0;public:double _num1,_num2;};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>#include <iostream>using namespace std;double OperationAdd::GetResult(){return _num1+_num2;}double OperationSub::GetResult(){return _num1-_num2;}double OperationMul::GetResult(){return _num1*_num2;}double OperationDiv::GetResult(){if (!_num2){return _num1/_num2;}elsecout<<"除数不能为0"<<endl;return 0;}
//Factory.h#ifndef _FACTORY_H#define _FACTORY_Hclass Operation;class OperationFactory{public:virtual Operation* CreateOperation()=0;};class AddFactory:public OperationFactory{Operation* CreateOperation();};class SubFactory:public OperationFactory{Operation* CreateOperation();};class MulFactory:public OperationFactory{Operation* CreateOperation();};class DivFactory:public OperationFactory{Operation* CreateOperation();};#endif
//Factory.cpp#include "Operation.h"#include "Factory.h"Operation* AddFactory::CreateOperation(){return new OperationAdd();}Operation* SubFactory::CreateOperation(){return new OperationSub();}Operation* MulFactory::CreateOperation(){return new OperationMul();}Operation* DivFactory::CreateOperation(){return new OperationDiv();}
//main.cpp#include <iostream>#include "Factory.h"#include "Operation.h"using namespace std;int main(){char operate;double numA;double numB;Operation* op=NULL;OperationFactory* of= NULL;cout<<"请输入数字1:";cin>>numA;cout<<"请输入运算符:";cin>>operate;cout<<"请输入数字2:";cin>>numB;switch(operate){case '+':of = new AddFactory();break;case '-':of = new SubFactory();break;case '*':of = new MulFactory();break;case '/':of = new DivFactory();break;default:cout<<"算符输入错误!"<<endl;return 0;}op = of->CreateOperation();op->_num1 = numA;op->_num2 = numB;double result = op->GetResult();cout<<result;return 0;}
- 五、工厂模式
- (五)工厂模式
- 五、抽象工厂模式
- (五)工厂方法模式
- 五种简单工厂模式
- 设计模式之(五、工厂方法模式)
- 设计模式之五--Factory_Method工厂模式
- Java设计模式(五) 工厂模式
- 设计模式(五):工厂方法模式
- Java设计模式(五) 之 工厂模式
- 设计模式之五工厂方法模式
- 设计模式(五)工厂模式
- 设计模式(五)简单工厂模式
- 设计模式系列之五工厂模式
- Java设计模式《五》工厂方法模式
- 设计模式(五)-简单工厂模式
- 设计模式—工厂模式(五)
- 设计模式(五):工厂方法模式
- 欧拉路和欧拉图
- PID参数调节总结
- log4net 在VS2010 NET4下的使用
- hdu 1277 全文检索
- 源码安装软件 pkgconfig ld.so.conf ldconfig
- 五、工厂模式
- eclipse安装ADT插件
- Completion
- 序列容器(list)
- linux UART串口驱动开发文档
- Windows Phone开发(42):缓动动画
- 关于《学习基于ARM平台的嵌入式系统》的收获和思考
- IO端口与IO内存
- 免锁算法----原子变量