工厂方法模式

工厂模式——我有不止一个对象

二次信任 提交于 2020-03-19 14:58:12
3 月,跳不动了?>>> 3年工作经验是吧? 你知道工厂模式分为几类吗?他们都有什么区别? 那你说说你们项目中是怎么使用工厂模式的? 带着问题,尤其是面试问题的学习才是最高效的。加油,奥利给! 文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂模式可以分为三类: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂其实不是一个标准的的设计模式。GOF 23种设计模式中只有「工厂方法模式」与「抽象工厂模式」。简单工厂模式可以看为工厂方法模式的一种特例,为了统一整理学习,就都归为工厂模式。 这三种工厂模式在设计模式的分类中都属于 创建型模式 ,三种模式从上到下逐步抽象。 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节

java 23种设计模式

可紊 提交于 2020-03-18 11:43:43
设计模式(Design Patterns) ——可复用面向对象软件的基础 设 计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决 方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 在阅读过程中有任何问题,请及时联系:egg。 邮箱:xtfggef@gmail.com 微博: http://weibo.com/xtfggef 如有转载,请说明出处: http://blog.csdn.net/zhangerqing 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码 收集五年的开发资料下载地址 : http://pan.baidu

简单工厂模式概述

試著忘記壹切 提交于 2020-03-17 14:55:50
简单工厂模式概述 工厂方法的功能 1.根据应用环境和其他的因素,在层次类中选择一个类 2.创建所选择类的对象 3.返回给调用者所创建的对象(该对象的类型应该是层次类的超类类型即父类)​ 工厂方法的优点 1.使客户程序清晰:应用对象可以使用工厂方法访问合适类的对象,应用对象就不需要处理类的选择标准问题。 2.隐藏了创建对象的细节:因为不同的子类的对象需要以不同的方式创建,工厂方法将根据环境、客户选择而把创建对象的繁琐细节封装了起来。 3.可以不需要知道哪个具体类的对象被创建了:因为工厂方法返回给客户类的对象的类型为层次类的超类类型,所以客户类不需要知道哪个具体的子类的对象被创建了。 模式中的组件 Creator(工厂类): 1.简单工厂方法模式的核心 2.包含应用所需要的业务逻辑 3.工厂方法创建一个product类型的对象 Product组件: 1.JAVA接口或者抽象类 2.具体子类的共同接口 ConcreateProduct组件: 1.具体的JAVA类,实现其接口Product或者继承了Product 注释:parameter(参数) ​例1:汽车保险条款 利用简单工厂方法模式进行设计​,用于查询不同类型的汽车保险条款。 注释: 1.根据String Option参数的不同值,然后选择不同的保险 2.PolicyProducer属于工厂类 注释

23种设计模式

不打扰是莪最后的温柔 提交于 2020-03-14 11:07:09
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码下载地址 http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式

PHP 工厂模式

你离开我真会死。 提交于 2020-03-13 11:12:58
(一个创造者、一个产品,将类的实例化和对象的使用分离开,这就是工厂模式的思想) 工厂模式的确是让初学者比较费解的模式。 首先它有简单工厂和抽象工厂之分。但真正算得上设计模式的,是抽象工厂。而简单工厂说实在的仅仅是比较自然的再封装。所以很多教科书会显摆自己的内涵大幅度的介绍抽象工厂,而有意无意的忽略了简单工厂。 实际的情况又正好相反,简单工厂几乎每个人都会用得上,抽象工厂大部分人一辈子都用不上一次。 下面回答你的问题:简单工厂封装了new到底有啥好处? 在实际的项目中,在你通往架构师的道路上,你要培养出一种感觉:要new一个实体对象是件很谨慎的事情(不是指值对象),不要随便new。最好不要自己new,让别人去new,传给你去调用。这样new错了也是别人的事,换而言之你的模块是好质量的,禁得起推敲的。那么都不愿意去new,谁去new?让专门的一个工厂去new。请注意:这仅仅是解决new的方式之一,此外还要反射啊等等。那你必须要等到真正接触大型项目才能有体味的。 作者:余叶 链接: https://www.zhihu.com/question/24843188/answer/49197026 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1.隐藏具体类名,很多类隐藏得很深的,而且可能会在后续版本换掉 2.避免你辛苦的准备构造方法的参数 3

创建型模式之抽象工厂模式

喜你入骨 提交于 2020-03-12 20:43:22
重要程度:5星 3.1. 模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。 产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。 当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。 抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。 抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建

23种设计模式

删除回忆录丶 提交于 2020-03-08 04:28:39
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码下载地址 http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式

简单工厂模式(非23种设计模式之列)

流过昼夜 提交于 2020-03-07 03:28:14
目录 概念 优缺点 优点 缺点 应用场景 模式角色组成 抽象产品(Product)角色 具体产品(Concrete Product)角色 工厂(Creator)角色 代码实现 抽象产品类 AbstractCar.java 具体产品类-奔驰车类 BenzCarImpl.java 具体产品类-保时捷车类 PorscheCarImpl.java 工厂类(二选一) CarFactoryFirst.java CarFactorySecond.java Client 客户端调用 CarFactoryDemo.java 简单工厂模式-控制台输出 概念 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 优缺点 优点 1、工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品; 2、简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。 3、客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。 4

工厂方法模式

南笙酒味 提交于 2020-03-07 03:03:16
目录 概念 实现原理 解决的问题 作用和意义 角色构成 抽象工厂(Creator)角色 具体工厂(Concrete Creator)角色 抽象产品(Product)角色 具体产品(Concrete Product)角色 UML类图 代码实现 抽象工厂 IPressFactory.java 具体工厂 HarvardPressFactory.java OxfordPressFactory.java 抽象产品 IBook.java 具体产品 HongLouBook.java SanGuoBook.java 客户端调用 FactoryMethodFirstDemo.java 工厂方法模式-控制台输出 概念 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。 实现原理 工厂方法模式对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。 解决的问题 工厂方法模式是简单工厂模式的衍生或者说改进,解决了简单工厂模式存在的问题,友好地遵循了开闭原则,实现了可扩展

一天一种设计模式之六-----工厂方法模式

谁都会走 提交于 2020-03-04 21:18:42
一.工厂方法模式 工厂方法模式属于创建型模式。 工厂方法模式定义:定义一个用于创建对象的借口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了他的子类。 一般工厂类会有一个工厂的接口,实现类也有一个实现的接口。工厂接口负责定义一个创建实现接口的方法,而工厂类负责创建具体的实现类。 工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式),工厂方法模式以及抽象工厂模式。工厂模式是编程中经常会遇到的一种模式。 工厂方法模式的优点有: 使代码结构清晰,有效的封装变化。在编程中,产品类的实例化有时候是复杂多变的,通过工厂模式将产品的实例化封装起来,是的调用者无需关心实例化过程只需依赖工厂即可得到自己想要的产品。 对调用者屏蔽具体的产品类。如果使用工厂模式,调用者只需要关心产品的接口就可以了,即使变更了具体的实现,对调用这来说没有任何影响。 工厂方法模式符合开放封闭原则,迪米特法则,依赖倒置原则。 二.测试代码 测试代码如下(实现一个计算器)下属模式中,如果新增了其他的计算类,只需要新建一个计算类实现,和相应的计算类工厂就可以了。 public class GongChangMethodTest { public static void main(String[] args) { IFactory factory = new SumFactory(); Jisuan