工厂方法模式有四要素

  • 产品接口
  • 产品实现
  • 工厂接口
  • 工厂实现

和简单工厂模式的区别

简单工厂模式只有三个要素,它没有工厂接口,并且得到的产品方法一般是静态的。因为没有工厂接口,所以在工厂实现的扩展性方面较弱,可以算作工厂方法模式的简化版。

计算器的例子用工厂方法模式实现

类图如下:

项目如下:

代码如下:

IFactory:

public interface IFactory {public Operation createOperation();
}

AddFactory:

public class AddFactory implements IFactory {@Overridepublic Operation createOperation() {return new AddOperation();}}

SubFactory:

public class SubFactory implements IFactory {@Overridepublic Operation createOperation() {return new SubOperation();}}

MulFactory:

public class MulFactory implements IFactory {@Overridepublic Operation createOperation() {return new MulOperation();}}

DivFactory:

public class DivFactory implements IFactory {@Overridepublic Operation createOperation() {return new DivOperation();}}

剩下的类和简单工厂模式的一样。

可以参考:http://www.cnblogs.com/DarrenChan/p/5661356.html

测试:

IFactory fac = new DivFactory();
Operation oper = fac.createOperation();
oper.setNumber1(3.3);
oper.setNumber2(5.12);
System.out.println(oper.getResult());

转载于:https://www.cnblogs.com/DarrenChan/p/5661426.html

工厂模式三部曲之工厂方法模式相关推荐

  1. 设计模式(二 三)工厂模式:1-简单工厂模式

    模拟场景: 需要构造一个运算器(Operation),分别负责加减乘除的运算功能. 思想: 这里需要构造四个 Operation,可以使用 Factory 去统一创建这四个对象. 所需要构造的对象是运 ...

  2. 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)

    0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...

  3. 详解设计模式:模版方法模式

    模板方法模式(Template Method Pattern)也被称为模板模式(Template Pattern),是在 GoF 23 种设计模式中定义了的行为型模式. 模板方法模式 定义一个操作中的 ...

  4. 工厂模式三部曲之二_工厂模式

    自<工厂模式三部曲之一_简单工厂模式>之后,貌似已经很久没有继续这个三部曲了,所以抽点时间把后两篇给补上吧.首先回顾下简单工厂模式的主要内容:简单工厂模式就是实质就是专门定义了一个工厂类, ...

  5. 工厂模式三部曲之一_简单工厂模式

    这段时间想要好好了解下工厂模式,从而在园中看了很多博友的关于工厂模式的博客, 受益匪浅......同时也感谢各位博友对知识的无私的分享....知识在于积累,但个人觉得积累知识的最好方式是当自己学懂了某 ...

  6. 设计模式-工厂模式三部曲

    设计模式-工厂模式三部曲(转) 转自:http://www.cnblogs.com/holyknight-zld/category/402079.html 工厂模式三部曲之一_简单工厂模式 转自:ht ...

  7. 设计模式 之美 -- 工厂方法模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现如下 C++实现 C语言实现 4. 缺点 1. 解决问题 在简单工厂模式中,我们使用卖衣服进行举例,同一种工厂可以卖很多不同种类的衣服,工厂只是将衣 ...

  8. 工厂方法模式和抽象工厂模式

    工厂方法模式和抽象工厂模式 工厂方法模式 抽象工厂模式 总结: 工厂方法模式 #include <string> #include <iostream>// Abstract ...

  9. 工厂方法模式与抽象工厂模式的区别

    工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类. 一个抽象工厂类,可以派生出多个具体工厂类. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以 ...

最新文章

  1. Python打包程序
  2. 没有安装提供程序“System.Data.SqlServerCe.3.5”的解决方法
  3. CSDN Blog V3.0.0.2升级公告
  4. webservice服务器端获取request对象的三种方式
  5. 《STL源码剖析》学习--6章--_rotate算法分析
  6. 牛客多校1 - Infinite Tree(虚树+换根dp+树状数组)
  7. numpy创建zeros数组时报错TypeError: Cannot interpret ‘8‘ as a data type
  8. rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务
  9. 送你一个在线机器学习网站,真香!
  10. cdp备份mysql数据库_数据库如何备份与恢复
  11. 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
  12. JavaScript之jQuery够用即可(jQuery的引入、查找选择器、左侧菜单栏)
  13. Android:Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
  14. 值得收藏的微软Windows系统蓝屏代码大全以及修复方法
  15. Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流)
  16. (转)wuauclt.exe病毒解决方案
  17. 360打开html加载不出来,360浏览器显示正在解析主机打不开网页如何处理
  18. Java基础之二维数组
  19. 使用Arduino开发ESP32:关于esp32 wifi连接不上的解决办法
  20. AAAI 2019 论文解读:卷积神经网络继续进步

热门文章

  1. AcWing 4244. 牛的比赛(双向建图BFS)
  2. 如何利用webpack4.0搭建一个vue项目
  3. 3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
  4. bootstrap-面板
  5. 如何在思科虚拟PC机信息进行修改
  6. I.MX6 ifconfig: SIOCSIFHWADDR: Cannot assign requested address
  7. NSNotificationCenter详解
  8. [转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】...
  9. Maclean写的Oracle入门书
  10. silverlight小结