博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
阅读量:4116 次
发布时间:2019-05-25

本文共 768 字,大约阅读时间需要 2 分钟。

 :简单工厂是用来生产”东西“的,那任何”东西“的子类,比如汽车,自行车,轮船,洗发水都是可以被生产的,但此处简单工厂的压力太大了啊,任何”东西“的子类都可以被生产,负担太重,所以一般对简单工厂类也有种称呼,叫”上帝类“。

而工厂方法模式就很好的减轻了工厂类的负担,把某一类/某一种东西交由一个工厂生产,同时增加某一类”东西“并不需要修改工厂类,只需要添加生产这类”东西“的工厂即可,使得工厂类符合开放-封闭原则。

对于”东西“的分类,有时候不能光是横向的分类,从另一个角度也是可以分类的,不知道这句话的意思能不能懂,打个比方:汽车可以根据品牌分为奔驰、奥迪,也可以根据类别分为普通三厢车和SUV车,如果用工厂方法来描述的话,奔驰车工厂有一个方法即生产奔驰车,奥迪车工厂有一个方法生产奥迪车,但在有多重分类的情形下,这样写已经不够用,不符合实际了,这个时候需要用到抽象工厂模式,即奥迪车工厂有两个方法,一个方法是生产普通三厢奥迪车,另一个方法是生产SUV奥迪车。奔驰车工厂有两个方法,一个方法是生产普通三厢奔驰车,另一个方法是生产SUV奔驰车。

上面即工厂方法模式和抽象工厂模式的应用场景,因为这两者很像,所以概念上不容易区分,可以这么说,工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。

再说下抽象工厂模式,此处的抽象工厂接口应该是有两个方法,一个是生成普通三厢车,一个是生产SUV车,可以说,生产的”东西“已经被限定住了,因此你不能生产某品牌汽车外的其他”东西“,因而可以理解成使用抽象工厂模式不能新增新的”东西“(在简单工厂和工厂方法中理论上都是可以新增任意”东西“的)

原文链接:http://blog.csdn.net/superbeck/article/details/4446177

你可能感兴趣的文章
object-fit和object-position_定义图片和视频元素在容器内如何显示的css属性
查看>>
华为宣布:免费培养2000名VUE&H5开发者!
查看>>
前端基础知识整理汇总(下)
查看>>
详解30道Vue面试题
查看>>
详细介绍CSS3弹性伸缩box布局
查看>>
5种CSS实现垂直对齐的方法
查看>>
63段常用的JS代码片段汇总
查看>>
【前端面试题】02—59道CSS面试题(附答案)
查看>>
Webpack模块化原理图解
查看>>
推荐14个可以展示你代码的网站
查看>>
canvas绘图详解笔记之线条及线条属性
查看>>
【前端面试题】01—42道常见的HTML5面试题(附答案)
查看>>
【前端面试题】03—200+道常见JavaScript基础面试题上(附答案)
查看>>
Vue项目中使用 tinymce 富文本编辑器的方法,附完整源码
查看>>
大厂面试官常问的React和Vue难题,都在这儿了!
查看>>
为什么总有人说:“前端饱和了”、“前端不好找工作”?
查看>>
vue实现一个6个输入框的验证码输入组件
查看>>
【前端面试题】04—33道基础CSS3面试题(附答案)
查看>>
JQuery如何阻止事件冒泡
查看>>
JavaScript最新手机号码、电话号码正则表达式
查看>>