摘要:从设计模式的分类来看简单工厂模式是创建型模式。使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
简单工厂模式提供了一个接口可以根据传递的参数的不同创建不同的对象,从而将对象自身的逻辑与对象的创建分离开。
从设计模式的分类来看简单工厂模式是创建型模式。事实上与简单工厂模式类似的还有工厂模式和抽象工厂模式。那它们有什么区别呢?
我们从名字入手分析一下,简单 ,为什么叫简单工厂模式?因为它仅仅只是分离了对象的创建和对象的使用,一旦有新的产品加入,就必须修改简单工厂中对象创建的方法,这样并没有遵守对修改封闭,对扩展开放的原则。所以这个模式的抽象和分离的还不够彻底,相比而言工厂模式就在简单工厂模式的基础之上加了一层对工厂的抽象,具体的产品由具体的工厂来创建,这样新增产品就只需要新增一个工厂就行,并不会对原来的代码产生影响,其次 工厂 ,这个对应其创建型模式,用于创建对象。
应用场景
JDK中的工具类java.tet.DateFormat,用于格式化一个本地日期或时间。
public final static DateFormat getDateInstance(); public final static DateFormat getDateInstance(int style); public final static DateFormat getDateInstance(int style,Locale locale);
java加密技术
获取不同加密算法的秘钥生成器
KeyGenerator keyGen=KeyGenerator.getInstance("DESede");
创建密码器
Cipher cp=Cipher.getInstance("DESede");UML图 优缺点 优点
简单工厂模式把对象创建的逻辑进行了封装,在使用的对象的时候不需要了解创建的细节
创建对象可以使用对应的参数来确定创建的具体对象,而不需要知道对象的类名
缺点由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。
使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。
系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。
简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
代码实例 代码地址:simple-factory欢迎大家fork和pull request,希望大家一起能够能够一起交流学习设计模式,帮助我们用javascript写更专业的代码
参考:
简单工厂模式
simple-factory-pattern
factory_pattern
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78401.html
摘要:设计模式工厂模式最近阅读了几本设计模式方面的书籍学习之余整理下来方便以后的归纳和梳理设计模式工厂模式创造工厂模式是一种创建性模式也就是一种创建对象的最佳实践首先我们需要理解为什么我们需要工厂模式想象一个场景如果你要求去买一些东西板烧鸡腿 Javascript设计模式-工厂模式 最近阅读了几本设计模式方面的书籍,学习之余整理下来,方便以后的归纳和梳理 设计模式-工厂模式 创造工厂模式是一...
摘要:基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。工厂方法模式之所以又被称为多态工厂模式,是因为所有的具体工厂类都具有同一抽象父类。工厂方法模式总结工厂方法模式是简单工厂模式的进一步抽象和推广。 JavaScript工厂模式 首先需要说一下工厂模式。工厂模式根据抽象程度的不同分为三种 简单工厂模式 工厂方法模式 抽象工厂模式 1.简单工厂模式 简单工厂模式:又称为静态工厂方法...
摘要:简单工厂模式简单工厂模式又叫静态工厂模式,由一个工厂对象决定创建某一种产品对象类的实例。工厂方法模式工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心类就变成了抽象类。抽象工厂模式一般用在 1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不...
摘要:简单工厂模式简单工厂模式又叫静态工厂模式,由一个工厂对象决定创建某一种产品对象类的实例。工厂方法模式工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心类就变成了抽象类。抽象工厂模式一般用在 1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不...
阅读 856·2021-10-11 10:59
阅读 2791·2019-08-30 15:43
阅读 2128·2019-08-30 11:08
阅读 1646·2019-08-29 15:20
阅读 1001·2019-08-29 13:53
阅读 485·2019-08-26 13:24
阅读 1632·2019-08-26 13:24
阅读 2819·2019-08-26 12:08