第八话-工厂方法模式

第八话-工厂方法模式

大家好,又见面了,我是全栈君。




一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。

一、什么是工厂方法模式?
所谓工厂方法模式即简单工厂模式的升级版。

工厂方法模式和简单工厂模式除了工厂类不同之外其它都一样。
二、有了简单工厂模式为什么还用工厂方法模式?
简单工厂模式似乎非常easy。正由于如此。他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例。每次添加一个新的操作时都要更改工厂类里的switch分支。

这样就违背了面向对象设计的扩展而非改动-也既是之前学习的开放封闭原则。怎么解决问题呢?我们能够採用依赖倒转原则对其完好。
三、代码演示样例(在第一话计算器的基础上改动)
第一个变化:
把之前的OperationFactory.java改动例如以下
public interface OperationFactory {
 public Operation createOperation();
}
第二个变化:
加入新的工厂类:AddFactory.java
public class AddFactory implements OperationFactory {
 public Operation createOperation() {
  // TODO Auto-generated method stub
  return new AddOperation();
 }
}
使用AddFactory给OperationFactory实例化
OperationFactory factory = new AddFactory();
Operation operation = factory.creaOperation();

第八话-工厂方法模式

注:此图来自《大话设计模式》
四、总结
因为有前面简单工厂模式和封闭开放原则的基础,此模式非常easy。一起学习,加油。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116625.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 安装Ubuntu 21.04后要做的事「建议收藏」

    安装Ubuntu 21.04后要做的事「建议收藏」Ubuntu19.10发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化。1.删除libreofficelibreoffice虽然是开源的,但是Java写出来的office执行效率实在不敢恭维,装完系统后果断删掉sudoapt-getremovelibreoffice-common2.删除Amazo…

    2022年5月15日
    45
  • js数组截取方式splice()和slice()方法

    js数组截取方式splice()和slice()方法js数组截取方式splice()和slice()方法1.splice()splice()方法可以添加元素、删除元素,也可以截取数组片段。删除元素时,将返回被删除的数组片段,因此可以使用splice()方法截取数组片段//传递一个参数,则该方法仅执行删除操作,参数值指定删除元素的起始下标(包含该下标元素)//splice()方法将删除后面所有元素vara=[1,2,3,4,5];//定义数组varb=a.splice(2);//从第三个元素开始执行删除console

    2022年5月25日
    46
  • svn—Eclipse中如何显示svn 信息「建议收藏」

    从svn下载的项目,导入Eclipse中,就是不显示出文件的文件的状态图标和后面的版本号。

    2022年2月24日
    119
  • mysql format不要逗号_笔记:number_format() 函数去掉数字千分位的逗号

    mysql format不要逗号_笔记:number_format() 函数去掉数字千分位的逗号最近有朋友找我仿站,为了实现某些效果,要去掉访问次数千分位的逗号,说真的,倡萌没有系统学习过PHP,所以只好求教露兜老大,得知可以通过number_format()函数通过千位分组来格式化数字。自己折腾下,还真实现了,记录一下。PHPnumber_format()函数定义和用法number_format()函数通过千位分组来格式化数字。语法number_format(number,de…

    2022年10月20日
    3
  • 安卓软件反编译教程_android反编译教程

    安卓软件反编译教程_android反编译教程该楼层疑似违规已被系统折叠隐藏此楼查看此楼如何修改信息,联系人,通话记录的2级字体颜色教程(4.1.1和4.1.2)第一个修改信息的字体颜色2级1.反编辑SecMms.apk2.打开res\layout-sw359dp的conversation_list_item.xml3.找到4.把上面的颜色编码修改成android:textColor=”#ffff33b5e5″(自己改自己喜欢的颜色编码,…

    2025年12月16日
    4
  • float double取值范围_double float区别

    float double取值范围_double float区别Java浮点数浮点数结构  要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法,比如,简单点的,float四个字节,前两个字节表示整数位,后两个字节表示小数位(这就是一种规则标准),这样就组成一个浮点数。而Java中浮点数采用的是IEEE754标准。IEE

    2025年8月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号