C++设计模式:简单工厂模式
来源:互联网 发布:游戏主机历史 知乎 编辑:程序博客网 时间:2024/06/06 18:11
简单工厂模式:将业务逻辑与界面逻辑分开,实际上是表现了c++面向对象的思想。
代码实现思路:定义一个基类,保存所有类的基本信息。然后类的实例化推迟到其子类。再用一个单独的类来做创造实例的过程,就是工厂。
代码:
#include<iostream>#include<exception>#include<string>using namespace std;class Operation{protected: double _numberA; double _numberB;public: Operation() :_numberA(0.0), _numberB(0.0) {} void SetNumberA(double number) { _numberA = number; } void SetNumberB(double number) { _numberB = number; } double GetNumberA() { return _numberA; } double GetNumberB() { return _numberB; } virtual double GetResult() = 0;};class OperationAdd :public Operation{ double GetResult() { return _numberA + _numberB; }};class OperationSub :public Operation{ double GetResult() { return _numberA - _numberB; }};class OperationMul :public Operation{ double GetResult() { return _numberA*_numberB; }};class OperationDiv :public Operation{ double GetResult() { if (abs(_numberB) > 0.0001) return _numberA / _numberB; else throw("除数不能为0"); }};class OperationFactory{public: static Operation* createOperator(string operate) { Operation* oper = NULL; if (operate == "+") { oper = new OperationAdd(); } else if (operate == "-") { oper = new OperationSub(); } else if (operate == "*") { oper = new OperationMul(); } else if (operate == "/") { oper = new OperationDiv(); } return oper; }private:};int main(){ Operation*oper; oper = OperationFactory::createOperator("+"); oper->SetNumberA(14); oper->SetNumberA(34); double result = oper->GetResult(); cout << result; return 0;}
阅读全文
0 0
- C#--简单工厂设计模式
- 设计模式 - 简单工厂模式(C++)
- C#--设计模式之简单工厂模式
- 设计模式之简单工厂,工厂方法模式(c++)
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- POJ 2528 线段树区间更新
- Codeforces Round #419 (Div. 2)
- 先来看看什么是Lambdas
- 面试官员提出:148个资源让你成为CSS专家(上)
- Java面向对象的理解
- C++设计模式:简单工厂模式
- 使用 webpack + react + redux + es6 开发组件化前端项目
- Android中用GifView显示Gif动画及Gifview简介
- 关于多用户时hadoop的权限问题
- 锋利的jQuery读书笔记-第11章 jQuery性能优化和技巧
- Web自动化测试-Protractor基础(二)
- laravel框架中vagrant常用命令
- 手把手教你在github上搭建自己的代码仓库
- 常见的路由表生成算法