2019独角兽企业重金招聘Python工程师标准>>>

/*** @Title: Calculation.java* @Package com.wangbiao.design.factory* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:16:27 * @version V1.0*/
package com.wangbiao.design.factorymethod;/*** @Title: Calculation.java* @Package com.wangbiao.design.factory* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:16:27 * @version V1.0*/
public abstract class Calculation {private double  num1;private double  num2;public double getNum1() {return num1;}public void setNum1(double num1) {this.num1 = num1;}public double getNum2() {return num2;}public void setNum2(double num2) {this.num2 = num2;}public abstract double getResult();}class AddOperation extends Calculation{@Overridepublic double getResult() {return this.getNum1() +this.getNum2();}}class SubOperation extends Calculation{@Overridepublic double getResult() {return this.getNum1()- this.getNum2();}}class MulOperation extends Calculation{@Overridepublic double getResult() {return this.getNum1() * this.getNum2();}}class DivOperation extends Calculation{@Overridepublic double getResult() {if(this.getNum2() != 0){return this.getNum1() / this.getNum2();}else{System.out.println("分母不能为零");return 0;}}}/*** @Title: IFactory.java* @Package com.wangbiao.design.factorymethod* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:46:26 * @version V1.0*/
package com.wangbiao.design.factorymethod;/*** @Title: IFactory.java* @Package com.wangbiao.design.factorymethod* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:46:26 * @version V1.0*/
public interface IFactory {public Calculation creatOperation();
}class AddFactory implements IFactory{@Overridepublic Calculation creatOperation() {return new AddOperation();}
}class SubFactory implements IFactory{@Overridepublic Calculation creatOperation() {return new SubOperation();}
}class MulFactory implements IFactory{@Overridepublic Calculation creatOperation() {return new MulOperation();}
}class DivFactory implements IFactory{@Overridepublic Calculation creatOperation() {return new DivOperation();}
}/*** @Title: Client.java* @Package com.wangbiao.design.factorymethod* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:44:30 * @version V1.0*/
package com.wangbiao.design.factorymethod;/*** @Title: Client.java* @Package com.wangbiao.design.factorymethod* @Description: TODO * @author wangbiao   * @date 2014-9-24 下午11:44:30 * @version V1.0*/
public class Client {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubIFactory factory = new AddFactory();Calculation cal = factory.creatOperation();cal.setNum1(1);cal.setNum2(2);System.out.println(cal.getResult());}}

转载于:https://my.oschina.net/u/617909/blog/318349

java设计模式_工厂方法相关推荐

  1. 一文叫你弄懂Java设计模式之工厂方法模式:图解+日志记录器代码实例

    文章目录 详解Java设计模式之工厂方法模式 案例引入工厂方法模式 工厂方法模式 定义 案例分析 UML类图分析 代码分析 工厂方法的重载 工厂方法的隐藏 模式优点 模式缺点 模式适用环境 详解Jav ...

  2. 二、java设计模式之工厂方法+抽象工厂模式(创建型设计模式)

    创建型设计模式-工厂模式和应用 工厂模式介绍: 它提供了一种创建对象的最佳方式,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 例子: 需要购买一辆车,不用管 ...

  3. java设计模式通俗_通俗易懂的Java设计模式之工厂方法模式

    一 .工厂方法(Factory Method)模式 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负 ...

  4. Java设计模式之工厂方法模式与抽象工厂模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.前期回顾 上一篇<Java设计模式之单例模式>详细介绍了单例模式,介绍了单例模式的使用场景,优缺点,同时也写了 ...

  5. 【Java设计模式】工厂方法

    上篇文章中介绍了[Java设计模式]简单工厂 ✍ 这次介绍工厂方法模式,该设计模式的类型为创建型,为真正意义上的第一个我们介绍的设计模式. 首先说一下简单工厂模式的不足: 在简单工厂模式中,只提供了一 ...

  6. Java 设计模式之工厂方法模式

    本文为笔者学习<Head First设计模式>的笔记,并加入笔者自己的理解和归纳总结 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类 ...

  7. Java设计模式 之 工厂方法模式

    1. 使用设计模式的好处:可提高代码的重复性,让代码更容易被他人理解,保证代码的可靠性. 2. 工厂模式定义:就是创建一个工厂类来创建你需要的类,工厂模式包括工厂模式和抽象工厂模式,抽象工厂模式是工厂 ...

  8. java设计模式之工厂方法模式

    工厂方法模式是类的创建模式,又叫虚拟构造模式(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式. 工厂方法模式的用意是定义一个创建产品的工厂接口, ...

  9. 最简单java设计模式:工厂方法模式

    前言 在前一篇文章讲解了一下简单工厂模式,在上篇文章中,我们也讲到了简单工厂模式的缺点,就是不满足开闭原则,这对于软件的设计来说,是不太好的,而下面讲解的工厂方法模式,正是为了弥补简单工厂模式的缺点, ...

最新文章

  1. AI 技术与人类主体想象 ——基于人工直觉在线讨论的研究
  2. 2022年初,给5年内还想做产品经理的提个醒!
  3. python和javascript哪个好_JavaScript与Python:主要区别
  4. actions相互调用并且存在顺序
  5. Android programming on Mac 之安装Eclipse
  6. VC的MySQL编程
  7. 项目-团队-技术-个人(专业篇)
  8. 两篇 Spring 总结(一)
  9. 64位win10下安装xgboost python包的教程
  10. [转载]----Hadoop2.0命令手册
  11. 如何修复vagrant up失败错VBoxManage: error: The machine is already locked for a session (or being unlocked)
  12. MOSFET的基本知识
  13. 关于安装cmd命令行安装pyinstaller库失败的解决方法
  14. json文件保存与读取
  15. 三年级信息技术用计算机娱乐,“第5课 用计算机娱乐”教学设计
  16. 微信小程序 小程序生命周期、页面导航/事件、WXS脚本(笔记)
  17. 学校计算机竞赛方案,计算机技竞赛方案.doc
  18. 【Java学习从入门到入土,手把手吧基础知识填充进你的大脑】
  19. 2022--2023
  20. excel中F4的妙用

热门文章

  1. 计算机网络基础必备(三次握手,四次握手,以及HTTP协议相关)
  2. git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目
  3. 超重磅 | 神策数据“两云一平台”上线,拥抱数字化经营
  4. 数据驱动:这是一种文化
  5. BFC与IFC概念理解+布局规则+形成方法+用处
  6. sed原理的一些感悟
  7. 13.小结Action
  8. Java数据结构与排序算法——堆和堆排序
  9. oracle数据库优化--基本概念
  10. C# HttpRequest基础连接已经关闭: 接收时发生意外错误