一、简单工厂模式

   1、起因

    最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界。首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示。

   2、代码

    简单介绍一下功能:用面向对象的思想做一个简单的计算器,实现的方式自己选择。

    首先这是一个用到了面向对象的思想,我们知道面向对象的设计思想就是:封装、继承、多态。这样做的好处就是为了程序的扩展性和代码复用性。可以实现松耦合。

  (1)下面是运算抽象类,和继承它的子类(加法,减法,乘法,除法)

/*** 运算抽象类* @author lixiaochao**/
public abstract class Operation {protected double _numberA = 0;protected double _numberB = 0;public double get_numberA() {return _numberA;}public void set_numberA(double _numberA) {this._numberA = _numberA;}public double get_numberB() {return _numberB;}public void set_numberB(double _numberB) {this._numberB = _numberB;}public double getResult(){double result = 0;return result;}}
/*** 加法运算* @author lixiaochao**/
class OperationAdd extends Operation{public double getResult(){return _numberA + _numberB;}
}
/*** 减法运算* @author lixiaochao**/
class OperationSub extends Operation{public double getResult(){return _numberA - _numberB;}
}
/*** 乘法运算* @author lixiaochao*/
class OperationMul extends Operation{public double getResult(){return _numberA * _numberB;}
}
/*** 除法运算* @author lixiaochao**/
class OperationDiv extends Operation{public double getResult(){if(_numberB == 0){throw new RuntimeException("被除数不能为0");}return _numberA / _numberB;}
}

  (3)下面是简单工厂的实现类。

/*** 简单工厂模式* @author lixiaochao**/
public class OperationFactory {public static Operation createOperation(String operate){Operation oper = null;switch(operate){case "+" : oper = new OperationAdd();break;case "-" : oper = new OperationSub();break;case "*" : oper = new OperationMul();break;case "/" : oper = new OperationDiv();break;}return oper;}
}

  (4)简单工厂的测试方法

/*** 简单工厂模式测试* @author lixiaochao**/
public class SimpleFactoryTest {public static void main(String[] args) {Operation oper ;String operate = "*";oper = OperationFactory.createOperation(operate);oper.set_numberA(8);oper.set_numberB(2);double result = oper.getResult();System.out.println(oper.get_numberA()+operate+oper.get_numberB()+" 的结果是:"+result);}
}

(3)结果是:

3、总结

简单工厂方法:个人理解为由工厂方法代理根据要求生成我们所需要的对象。这样有利于代码的复用性和可扩展性。

4、简单记录,方便记忆。做事细心,方无愧我心。不足之处,还望大神指点。

转载于:https://www.cnblogs.com/lixiaochao/p/5787634.html

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

  1. 大话设计模式1 简单工厂模式 策略模式

    终于得空,本来想看看android的源码,但是想起以前看源码时总有点晕,不清楚为什么要这样设计代码结构,所以决定先把设计模式的相关知识学习一下. 买了n久的大话设计模式啊..终于下定决心开始啃了... ...

  2. 【大话设计模式】——简单工厂模式

    一.概念 简单工厂模式(Simple Factory Pattern)属于创建型模式,又叫做静态工厂方法模式(Static FactoryMethod Pattern),可是不属于23GOF设计模式之 ...

  3. php的类图怎么生成_PHP设计模式之简单工厂模式

    PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...

  4. C#设计模式(2)——简单工厂模式

    一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...

  5. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  6. .NET设计模式(1): 简单工厂模式

    .NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...

  7. JS常用的设计模式(2)——简单工厂模式

    JS常用的设计模式(2)--简单工厂模式 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定 ...

  8. 设计模式之简单工厂模式(C#版)

    设计模式之简单工厂模式(C#版) 简介 假设有个女朋友 总结 简介 我用最简洁而直接的方式来描述一下,什么是简单工厂模式.一句话就是,工厂类使用switch case语句返回特定类型. 下面,我们用一 ...

  9. 大牧絮叨设计模式:简单工厂模式

    文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...

最新文章

  1. 辞职之后的思考--激励
  2. mysql 语句除法_SQL的查询语句(除法)
  3. 【Matlab 图像】灰度二值化处理
  4. C++struct和class区别
  5. [转载] 民兵葛二蛋——第1集
  6. es6 --- 使用生成器交替执行
  7. 视图添加字段_Odoo开发教程2-为模型添加字段
  8. json vs obj
  9. 计算机视觉-自定义对象检测器
  10. C#指南,重温基础,展望远方!(4)表达式
  11. java父包引用_父类引用指向子类对象(java)
  12. 一会404一会500_没网络就是404?这锅可不能乱背!
  13. pandas常用函数(更新中)
  14. 曝 iPhone 13 系列定价有望下调:起售价或低于 5499 元;TikTok 成为全球收入最高 App|极客头条...
  15. springboot sessionfactory_Spring Boot从入门到精通(五)多数据源配置实现及源码分析...
  16. 的clear会清空内存吗_Python内存分配时有哪些不为你知的小秘密?
  17. 备忘:BLOCK CORRUPTION IN SYSTEM DATAFILE
  18. mac上调整phpstorm和webstorm的使用内存(默认是128m-750m) 避免卡顿
  19. 搭建一个属于自己的星球-快速建站实录(1/3):域名
  20. 服务器版“永恒之蓝”高危预警 (Samba远程命令执行漏洞CVE-2017-7494) 攻击演示...

热门文章

  1. 数据与计算机通信第八版pdf,数据与计算机通信(第八版)(英文版)
  2. linux下sql查询的使用,sql-server – 如何在Linux上查看SQL Server中的执行计划
  3. 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...
  4. CycliBarriar和CountdownLatch(计数器)
  5. 【Netty】ChannelHandler和ChannelPipeline
  6. Python的零基础超详细讲解(第六天)-Python的数字类
  7. android 后台服务拍照,Android实现后台开启服务默默拍照功能
  8. php正则如何使用 1,请问正则里面的值${1}怎么使用函数处理?怎么个写法?
  9. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  10. 安装npm_前端开发:node.js的node包管理器npm安装以及使用