简单工厂模式C++实现
来源:互联网 发布:区域分割粒子群算法 编辑:程序博客网 时间:2024/06/06 01:57
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">面向对象的优点:</span>
1、可维护:修改简单
2、可复用:可以在多个模块重复使用
3、可扩展:可以方便地加入一些其他功能
4、灵活性好:可以适应不同的需求
简单工厂模式:
对程序进行功能分析,不同功能模块独立
对计算器的UML图:
程序实现:
#include <iostream>#include <string>#include <memory>class Operation{public:Operation() = default;Operation(double a, double b) : NumberA(a), NumberB(b) {}double NumberA;double NumberB;std::string Symbol;virtual double getResult() {return 0;} };class Add : public Operation{public:Add(double a, double b) :Operation(a, b) {} double getResult() override {return NumberA + NumberA;}};class Sub :public Operation{public:Sub(double a, double b) :Operation(a, b) {}double getResult() override {return NumberA - NumberB;}};class Multiply : public Operation{public:Multiply(double a, double b) :Operation(a, b) {}double getResult() override {return NumberA * NumberB;}};class Divide : public Operation{public:Divide(double a, double b) :Operation(a, b) {}double getResult() override {double result = 0;return NumberA / NumberB;}};class Calculate{public:Calculate() = default;Operation oper;Operation* createOperation(std::istream &in) {std::string Symbol;std::cout << "PLZ enter number a, operations, number b !" << std::endl;in >> oper.NumberA >> Symbol >> oper.NumberB;if (Symbol == "+") return new Add(oper.NumberA, oper.NumberB);if (Symbol == "-")return new Sub(oper.NumberA, oper.NumberB);if (Symbol == "*")return new Multiply(oper.NumberA, oper.NumberB);if (Symbol == "/" && oper.NumberB != 0)return new Divide(oper.NumberA, oper.NumberB);}};int main() {Calculate cal;Operation* op = cal.createOperation(std::cin);double result = op->getResult();std::cout << result << std::endl;delete op;return 0;}
0 0
- 简单工厂模式C语言实现
- 简单工厂模式(C语言实现)
- C#-简单工厂模式
- 【C#】简单工厂模式
- 【C#】简单工厂模式
- 实现简单工厂模式
- 工厂模式简单实现
- 简单实现工厂模式
- 简单工厂模式(SimpleFactory-C#)
- 简单工厂模式(c++)
- 【C++】Chapter1:简单工厂模式
- Objective C--简单工厂模式
- Objective C 简单工厂模式
- 简单工厂模式(C#)
- Objective C--简单工厂模式
- C#--简单工厂设计模式
- 简单工厂~工厂模式--Java实现
- 简单工厂模式的实现
- LeetCode 86 Partition List
- 【杭电1702】基础 队列和栈
- Cocos2d-x优化中关于背景图片优化
- Radar Installation
- VS2010使用存在的问题
- 简单工厂模式C++实现
- hdu 5198 Strange Class(模拟)
- NSArray && NSDictionary
- Eclipse找出所有中文字符方法(全球化开发方式)
- 不要让忙碌成为逃避学习的借口--Blog开通,博主介绍
- Spring Cache
- 观察者模式
- 代码中动态该变shape的颜色
- DES加解密算法