c++ 实现工厂模式
来源:互联网 发布:两点最短路径算法 编辑:程序博客网 时间:2024/04/29 05:49
工厂模式大家都很熟悉了,就是利用多态,利用基类指针指向新生成的派生类,用该指针调用派生类的函数。
今天看《effective c++》写代码主要是练习一下,代码中类实现没有考虑太多的构造函数及虚构函数,各位见谅。
#include<iostream>#include<string>using namespace std;class Operation{public:void setNumA(double d1){numA = d1;}void setNumB(double d2){numB = d2;;}double getNumA() const{return numA;}double getNumB() const{return numB;}double virtual getResult() = 0;private:double numA;double numB;};class OperationAdd : public Operation{public:double getResult();};double OperationAdd::getResult(){return getNumA() + getNumB();}class OperationSub : public Operation{public:double getResult();};double OperationSub::getResult(){return getNumA() - getNumB();}class OperationMul : public Operation{public:double getResult();};double OperationMul::getResult(){return getNumA() * getNumB();}class OperationDiv : public Operation{public:double getResult();};double OperationDiv::getResult(){if (getNumB() == 0){cout << " the divisor can't be zero " << endl;throw runtime_error("the divisor can't be zero");}return getNumA() / getNumB();}class OperationFactory{public:static Operation * createOperation(char operate){Operation *oper;switch(operate){case '+' :oper = new OperationAdd;break;case '-':oper = new OperationSub;break;case '*':oper = new OperationMul;break;case '/':oper = new OperationDiv;break;default:cout << " can't reconginze the operate " << endl;oper = 0;}return oper;}};int main(){double numA;double numB;char operate;cout << " Please input two params " << endl;cout << " numA = ";cin >> numA;cout << " numB = ";cin >> numB;OperationFactory factory;cout << "Please input operate : ";cin>> operate;Operation *operation = factory.createOperation(operate);operation->setNumA(numA);operation->setNumB(numB);cout << " The result of " << numA << " " << operate <<" " << numB << " = " << operation->getResult() << endl;delete operation;system("pause");return 0;}
- C语言实现工厂模式
- 简单工厂模式C语言实现
- 工厂方法模式C语言实现
- C语言实现抽象工厂模式实例
- 工厂模式(C/C++实现理解)
- 简单工厂模式(C语言实现)
- 工厂函数模式 (C语言实现)
- 抽象工厂模式 (C语言实现)
- 设计模式的实现(C++)------工厂方法模式(FactoryMethod)
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- 工厂模式-C-工厂方法
- C语言实现《设计模式之禅》之工厂模式——标准工厂
- C语言实现《设计模式之禅》之工厂模式——抽象工厂
- 工厂模式(c++)
- C#-简单工厂模式
- C#-工厂方法模式
- 工厂模式 (C#)
- 【C#】简单工厂模式
- 基于对话框的opencv的傅里叶变换和巴特沃斯滤波源码
- spring集成hibernate.cfg.xml连接sqlserver的配置文件
- BP神经网络算法(1)
- 卡尔曼滤波随想
- 「視点の宴」は「心の栄養」(改訂の原稿)作者翔鶴
- c++ 实现工厂模式
- 别把自己变成了“二等公民”
- vi 替换命令
- 装饰设计模式总结
- BP神经网络算法(2)
- ubuntu下解压rar文件
- android文件选择、读取、浏览器的实现(音乐文件)
- 僵尺进程的避免
- Hessian服务端配置