读了一下大话设计模式这本书,发现非常不错,现在把练习的代码贴上来,,当然写得很烂,欢迎大家指正。

第一章:

SimpleFactory.h

#ifndef SIMPLEFACTORY_H
#define SIMPLEFACTORY_H
#include <string>
using namespace std;
class Operate
{
protected:double NumA=0.;double NumB=0.;
public:Operate()=default;Operate(double NumA_, double NumB_) :NumA(NumA_), NumB(NumB_){};virtual double GetResult(){return 0.;}
};
class OperAdd :public Operate
{
public:OperAdd() = default;OperAdd(double NumA_, double NumB_) :Operate(NumA_, NumB_){};double GetResult() override{return NumA + NumB;}};class OperSub :public Operate
{
public:OperSub() = default;OperSub(double NumA_, double NumB_) :Operate(NumA_, NumB_){};double GetResult() override{return NumA - NumB;}
};
class OperMult :public Operate
{
public:OperMult() = default;OperMult(double NumA_, double NumB_) :Operate(NumA_, NumB_){};double GetResult() override{return NumA*NumB;}
};
class OperDiv :public Operate
{
public:OperDiv() = default;OperDiv(double NumA_, double NumB_) :Operate(NumA_, NumB_){};double GetResult() override{if (NumB == 0.)throw "除数为0";return NumA / NumB;}};
class SimpleFactory
{
public:SimpleFactory() = default;double SwithOpra(const char OP, double NumA_, double NumB_){switch (OP){case '+':{OperAdd add=OperAdd(NumA_, NumB_);return add.GetResult();break;}case '-':{OperSub sub = OperSub(NumA_, NumB_);return sub.GetResult();break;}case '*':{OperMult mult = OperMult(NumA_, NumB_);return mult.GetResult();break;}case '/':{OperDiv div = OperDiv(NumA_, NumB_);return div.GetResult();break;}default:break;}}
};
#endif

main.cpp

#include "SimpleFactory.h"
#include <iostream>
using namespace std;
int main()
{SimpleFactory fac ;cout << fac.SwithOpra('+', 1., 2.) << endl;cout << fac.SwithOpra('-', 1., 2.) << endl;cout << fac.SwithOpra('*', 1., 2.) << endl;cout << fac.SwithOpra('/', 1., 2.) << endl;system("pause");return 0;
}

大话设计模式 简单工厂模式相关推荐

  1. 研磨23种大话设计模式------简单工厂模式 + 工厂方法模式 + 抽象工厂模式

    大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正 如果你从本文 get 到有用的干货知识,请帮忙点个赞呗,据说点赞的都拿到了offer 简 ...

  2. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  3. 三角形圆形创建与擦除java_设计模式---------------简单工厂模式

    设计模式---------------简单工厂模式 一.题目(Question) 使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和 ...

  4. 设计模式—简单工厂模式

    前言 简单工厂模式是一种比较容易理解的设计模式 简单工厂模式介绍 在设计模式中,简单工厂模式可以理解为负责生产对象的一个类,当使用new 关键字创建一个对象时,此时该类就依赖于这个对象,也就是他们间的 ...

  5. 设计模式 - 简单工厂模式

    文章目录 设计模式 - 简单工厂模式 1.意图 2.实例 1.创建颜色接口 - 定义生产的产品是什么 2.创建颜色枚举 - 定义生产哪些类型的产品 3.根据颜色枚举创建产品 - 根据产品清单生产产品 ...

  6. 设计模式--简单工厂模式

    什么是工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对 ...

  7. linkin大话设计模式--简单工厂

    linkin大话设计模式--工厂方法 什么是工厂方法:将多个类对象交给工厂来生成的设计被称为简单工厂模式,个人认为主要是为了实现解耦,在代码重构的时候会很重要. 代码如下: public class ...

  8. C#设计模式--简单工厂模式

    设计模式: 简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,下面简单举例说明: 简单工厂 ...

  9. C++设计模式--简单工厂模式

    概述 工厂模式:封装对象的实现.它可能是所有设计模式中最有用的模式之一了.这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式.其原理就是通过传入的参数来判断应该创建什么对象. UML 类 ...

最新文章

  1. 在vue中使用babel-polyfill
  2. 优化系统后VS启动不了问题的一种解决方案
  3. 雨林木风Ghost Win7 SP1 装机版 YN2012.05
  4. 找工作这几天遇到的骗人套路
  5. 整蛊偷快递的家伙!不愧是 NASA 工程师
  6. Magento: 自定义用户登录导向页面 Redirect Customer to Previous Page After Login
  7. 优秀ppt作品范例_毕业论文答辩ppt模板优秀范例
  8. php继承exten,es6,extends_react中通过extend继承,父组件为什么能访问子组件的属性,es6,extends,react.js - phpStudy...
  9. 看看能不能发推广链接。。。。。
  10. C/C++学习路线(总体把握C/C++)
  11. ActiveRecord 复合主键时 实体转换为DataRow
  12. 机器人教室外墙_智慧教室解决方案-机器人创客教室布局设计
  13. 2020抖音最新版去水印方法
  14. 计算机无法从硬盘启动怎么办,电脑开机无法引导硬盘启动怎么解决
  15. 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
  16. 视觉SLAM中的公制尺度(metric scale)
  17. Discuz!无法连接阿里云RDS数据库代理问题的处理方案
  18. Ardunio开发实例-ENC28J60以太网模块实现Web服务器
  19. 2019年中国研究生数学建模竞赛D题 汽车行驶工况构建【信息交流】
  20. java解析JT808协议

热门文章

  1. bugly上传符号表文件详细教程
  2. ps钢笔工具/路径/钢笔抠图/字体工具
  3. 了解计算机是如何工作的
  4. 什么东西可以改善睡眠,五款助眠好物帮你摆脱失眠困扰
  5. java 数值计算_常用的java数值计算方法
  6. BI业务分析思维:供应链生产制造策略(三)MTO、ATO、ETO
  7. oracle索引的测试
  8. html 自动打开qq浏览器,如何保证成功设置默认浏览器-在线帮助-QQ浏览器官网
  9. 【读书笔记】之《逻辑思维》
  10. 安装 | 企业版CDH服务器集群配置(详细)