简单工厂模式

  简单工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

package com.csdhsm.designpattem.simplefactory;/**  * <p>All rights Reserved, Designed By Han</p>* @Title:  Operator.java   * @Package com.csdhsm.designpattem.simplefactory   * @Description: 运算抽象类,提供抽象方法* @author: Han   * @E-mail: 294098789@qq.com  * @date:   2016年6月16日 上午10:48:44   * @version:V1.0     */
public abstract class Operator {protected double num1 = 0;protected double num2 = 0;public void setNum1(double num1) {this.num1 = num1;}public void setNum2(double num2) {this.num2 = num2;}//抽象方法abstract public double calculate();
}

package com.csdhsm.designpattem.simplefactory;/**  * <p>All rights Reserved, Designed By Han</p>* <p>For Taoyuan Web Application</p>* @Title:  FourOperations.java   * @Package com.csdhsm.designpattem.simplefactory   * @Description: TODO * @author: Han   * @E-mail: 294098789@qq.com  * @date:   2016年6月16日 上午10:50:09   * @version:V1.0     */
class OperationAdd extends Operator {@Overridepublic double calculate() {return num1 + num2;}
}class OperationSub extends Operator {@Overridepublic double calculate() {return num1 - num2;}
}class OperationMul extends Operator {@Overridepublic double calculate() {return num1 * num2;}
}class OperationDiv extends Operator {@Overridepublic double calculate() {if(num2 == 0)throw new RuntimeException("除数不能为0!");return num1 / num2;}
}

工厂类

package com.csdhsm.designpattem.simplefactory;/*** <p> All rights Reserved, Designed By Han</p>* @Title: Factory.java* @Package com.csdhsm.designpattem.simplefactory* @Description: 工厂类* @author: Han* @E-mail: 294098789@qq.com* @date: 2016年6月16日 上午10:33:48* @version:V1.0*/
public class Factory {private static Operator operator;public static Operator getOperator(String type) {if (type == null) {throw new NullPointerException();}//根据运算符号获得对应的计算类(对字符串switch/case判断,只有jdk1.7以上版本)switch (type) {case "+":operator = new OperationAdd();break;case "-":operator = new OperationSub();break;case "*":operator = new OperationMul();break;case "/":operator = new OperationDiv();break;default:throw new RuntimeException("未能识别的符号!");}return operator;}
}

客户端代码

package com.csdhsm.designpattem.simplefactory;/**  * <p>All rights Reserved, Designed By Han</p>* @Title:  Solution.java   * @Package com.csdhsm.designpattem.simplefactory   * @Description: 简单工厂模式* @author: Han   * @E-mail: 294098789@qq.com  * @date:   2016年6月7日 下午3:44:07   * @version:V1.0     */
public class Solution {public static void main(String[] args) {double num1 = 7;double num2 = 0;String type = "*";Operator operator = Factory.getOperator(type);operator.setNum1(num1);operator.setNum2(num2);System.out.println(operator.calculate());}
}

总结:

转载于:https://www.cnblogs.com/a294098789/p/5590251.html

设计模式(1)-----简单工厂模式相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 设计模式之简单工厂模式(Java 实现)

    设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...

  9. 设计模式之简单工厂模式

    一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式.   但是它是理解其它的工厂模式的一个很好 ...

  10. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

最新文章

  1. 员工执行力差怎么办?任正非说,抓住这12条,3天打造狼性团队
  2. 基础的重要性(程序猿之路)
  3. linux 配置 clang++ SDL 开发环境 (新手向)
  4. jQuery 选择器语法
  5. kompozer如何启动_使用KompoZer创建网站
  6. Java“地铁”表(JavaFX)
  7. 如何关闭默认浏览器检查
  8. java hook 和反射_Java反射与hook混用反射某支付的方法
  9. TP5项目lnmp环境500错误
  10. 递归算法经典实例_【经典算法】利用递归方法求5!
  11. 春节期间新闻回顾:思科微软多事 熊猫烧香完事
  12. 实验二+065+方绎杰
  13. 一周信创舆情观察(12.13~12.19)
  14. Nginx常见面试题整理---40题
  15. 计算机的屏幕录像,如何进行电脑屏幕录像?电脑录制屏幕视频的方法|电脑屏幕录像的图文步骤...
  16. 谷歌浏览器书签丢失,恢复工具
  17. FFMPEG详细参数
  18. 曾扬言 机器人合法公民_曾扬言“摧毁人类”的机器人索菲亚,现状如何?如果失控了咋办?...
  19. 【数据结构进阶】二叉平衡树
  20. dac单缓冲方式C语言设计,课程设计基于DAC0832单缓冲工作波形发生器.doc

热门文章

  1. 【Python】Python实战从入门到精通之五 -- 教你使用文件写入
  2. C++ Primer 第五版 第8章类 8.2——文件输入和输出
  3. 9张图带你领略AI态势!
  4. 解决python中出现IndentationError:unindent does not match any outer indentation level错误
  5. Spyder清除Variable Explorer手动安装protobuf3.0(为了配置windows的python接口)
  6. python之穿越火线游戏代码_Python 大作业之五子棋游戏(附代码)
  7. shiro springboot 整合
  8. phpcms attachment.class.php路径,解决phpcms上传不了图片的方法
  9. python和c#交互_python与C#的互相调用
  10. mysql insert插入的3种方法