优点:

  1.不用自己再去new对象,工厂会根据给的标识,自动替你new出一个你想要的实现类对象。

  2.一定程度上在加减乘除之间实现了解耦合。提高了代码的复用性和扩展性。

缺点:违反了开闭性,即新增功能还需要在源代码上修改。

一、整体思想图:

二、代码实现

  2.1 抽取固定模块类

package com.design.bean;/*** 简单工厂模式——父类(抽取固定模块)* @author phoebe**/
public class CaculateBean {private double a;private double b;private double result;public double getA() {return a;}public void setA(double a) {this.a = a;}public double getB() {return b;}public void setB(double b) {this.b = b;}public double getResult() {return result;}public void setResult(double result) {this.result = result;}}

  2.2 加法模块:

package com.design.calimpl;import com.design.bean.CaculateBean;/*** 加法模块* @author phoebe**/
public class Caculate_add extends CaculateBean {@Overridepublic double getResult() {return this.getA()+this.getB();}
}

  2.3减法模块/乘法模块/除法模块和加法模块一样

  2.4产生具体实例化对象工厂

  

package com.design.factory;import com.design.bean.CaculateBean;
import com.design.calimpl.Caculate_add;
import com.design.calimpl.Caculate_div;
import com.design.calimpl.Caculate_multi;
import com.design.calimpl.Caculate_sub;
import com.design.util.myException;/*** 控制具体采用哪一个实现类* @author phoebe**/
public class CaculateFactory {public static CaculateBean getBeanFactory(String str){switch(str){case "+" :return new Caculate_add();case "-" :return new Caculate_sub();case "*" :return new Caculate_multi();case "/" :return new Caculate_div();default:try {throw new myException();} catch (myException e) {e.printStackTrace();}}return null;}
}

  2.5测试代码

  

package com.design.test;import java.util.Scanner;import com.design.bean.CaculateBean;
import com.design.factory.CaculateFactory;/*** 测试* @author phoebe**/
public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double a = sc.nextDouble();double b = sc.nextDouble();String tig = sc.next();CaculateBean caculateBean = CaculateFactory.getBeanFactory(tig);caculateBean.setA(a);caculateBean.setB(b);System.out.println(caculateBean.getResult());}
}

转载于:https://www.cnblogs.com/pecool/p/8215649.html

简单工厂模式_计算器实现相关推荐

  1. 基于简单工厂模式的计算器程序

    这个计算器是我学Java时写的第一个Swing程序,后来我读<大话设计模式>的第一章简单工厂模式恰好也是计算器,于是就改进了之前这个. 源代码下载:https://github.com/m ...

  2. python简单工厂模式_简单工厂模式-python语言实现

    abstractoperation.py                           //抽象操作类 代码如下: import string class Operation(object): ...

  3. java 工厂模式 计算器_简单工厂模式实现简易计算器

    packageFactoryMethodPattern;/*创建人:czc 创建时间:2019/12/16 创建用途:简单工厂模式实现计算器--主界面*/ import javax.swing.*;i ...

  4. python的编程模式-使用简单工厂模式来进行Python的设计模式编程

    计模式的目的是让代码易维护.易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的. 简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式.这个模式的基本工作方式: 通过 ...

  5. Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)

    实验目的 1 .理解软件设计的相关理论 : 2 .理解面向对象设计原则: 实验内容 1 .简单工厂模式实验: (1) 参考讲义上的代码,利用简单工厂模式完成计算器应用程序: (2) 画出计算器程序简单 ...

  6. [Python设计模式] 第1章 计算器——简单工厂模式

    github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...

  7. python工厂模式 简书_[Python设计模式] 01 - 简单工厂模式

    设计模式的目的是让代码易维护.易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的. 简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式.这个模式的基本工作方式: 通 ...

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

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

  9. java为什么用工厂模式_为什么用简单工厂模式,而不是直接实例化对象

    一开始了解了"简单工厂模式"之后,在关于为什么不直接实例对象,而是利用工厂类来实例对象产生了疑惑. 经过多种渠道的了解,我最后的观点是:这个工厂类不仅仅就只能有实例化对象这一个功能 ...

最新文章

  1. Window10 VS17下 Opencv3.4.5配置
  2. 替换index和show中select_tag的方法
  3. OS中阻塞与挂起的区别sleep()的实现原理
  4. 深入理解分布式技术 - 缓存过期策略手写LRU
  5. Android——TabLayout 默认某个选项卡选中
  6. java robot 文档_文件配置 · simple-robot 机器人开发者使用文档 · 看云
  7. 黄聪:WordPress图片插件:Auto Highslide修改版(转)
  8. C++基础学习笔记:第一章、第二章
  9. ffmpeg将h264和aac合成ts,内存输入输出
  10. 完整简单c语言程序代码,初学C语言常用简单程序代码
  11. H2GIS读取GPX文件 测试 GPXRead
  12. 如何做出优质的Scratch作品
  13. markdown pad2注册码(2017年9月27日)
  14. 多通道振弦传感器VTN416采集仪应用工程项目安全监测实用性强
  15. 【技术指标】MACD详解
  16. 字节架构师发布“绝版”Java并发实现原理剖析JDK源码
  17. c语言isfinite用法,C# Double.IsFinite()用法及代码示例
  18. java ews_Java---使用EWS读取exchange邮件
  19. 第十六周学习周报20181224-20181230
  20. 印象笔记不能同步(其他浏览器可以上网,IE不能上网)

热门文章

  1. Docker基础之九: 管理容器的数据
  2. 页面 table 可编辑的实现
  3. 笔记本建立wifi热点!(主要针对XP)【直播】
  4. uva 11069 A Graph Problem
  5. 盛大文学推出“一人一书”计划,发布电子书战略
  6. 越阳刚的男人越容易生女孩
  7. 【UE】常用的UltraEdit使用技巧
  8. Lr(2)-脚本调试之“集合点” 和 “事务”
  9. win7+iis7.5下的asp.net网站发布系列问题
  10. BCH智能合约进程持续推进 新方案接连被推出