工厂方法模式:就是定义一个创建产品对象的工厂接口,让子类决定实例化哪一种
实例对象,也就是将实际创建实例对象的工作推迟到子类当中,核
心工厂类不再负责具体产品的创建。
我们可以这样理解工厂方法模式:由一个抽象工厂定义了创建产品的接口,但是
具体是哪一种产品抽象工厂是不知道的,产品的实例化工作被推迟到了具体工厂中。
在这一系列的变化过程中,应用的是程序设计语言中的多态方式,使用接口调用
对象实例的具体方法,获得不同对象的内容,而对外部是表现一致的(相同的方法),
这也是面向接口编程的有点。
像这样不在工厂中产生的对象实例,而是将实例化的工作推迟到工厂子类中,这种
模式被称做工厂方法模式。
工厂方法模式有如下角色:
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
实例:造车工厂会造拖拉机,汽车,火车,在一个工厂里明显不能完成,在现实世界中,一定是有自己独立的工厂来做。因为我们知道拖拉机,汽车,火车有很多共性也有很大差异,共性还是车,肯定都是重工生产,需要钢材,车床加工,都需要动力,都有座椅,车灯等等,那差异就多了,动力不同,火车可能是电动力,汽车是汽油,拖拉机是柴油等等。我们利用工厂方法来抽象这个造车工厂的模型如下:
设计原则:
(1)“开-闭”原则:一个软件实体应对扩展开放,对修改关闭。我
们在设计软件模块的时候应该使这个模块可以在不被修改的前
提下被扩展。
(2) 依赖倒置原则:不论工厂还是产品都应该依赖于抽象,而不是
具体的实体类。
使用场合:
(1)当子类型可能会有很多,以后需要不断增添不同的子类实现时;
(2)当一个系统尚在框架设计阶段,还不知道将来需要实例化哪些具
体类时;
(3)系统设计之初不需要具体对象的概念(或者说没有具体对象的概
念)
工厂方法模式优缺点:
优点:
(1)在工厂方法中,用户只需要知道所要产品的具体工厂,无须关系
具体的创建过程,甚至不需要具体产品类的类名。
(2)在系统增加新的产品时,我们只需要添加一个具体产品类和对应
的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”。
缺点:
(1)每次增加一个产品时,都需要增加一个具体类和对象实现工厂,是的
系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时
也增加了系统具体类的依赖。这并不是什么好事。
工厂
相关推荐
定义: 结构说明: 相关概念: 接口: 接口与抽象类的区别: 面向接口编程: 功能: 时序图: 优缺点: 代码阐释:
本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML...
普科国际软件一个学院的学习笔记,有3个文件word文档,文本,还有factory-demo源文件代码
设计模式学习笔记,此项目参考《大话设计模式》,只能作为入门级设计模式学习 设计原则 职责单一原则 开放-封闭原则 依赖倒转原则 高层模块不依赖底层模块,两个模块都应该依赖抽象。抽象不依赖细节,细节依赖抽象。...
是我在学习设计模式时整理的,其中一些是我自己学习,很多来自网络.希望对模式有兴趣的朋友有帮助,我会很高兴.
23种经典设计模式的分析,针对Java写的,自己的一些感悟, 与大家分享
1. 创建型模式:创建型模式关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低...
{14.2}XML的设计}{205}{section.14.2} {14.3}DTD/Schema}{205}{section.14.3} {14.3.1}SAX应用}{206}{subsection.14.3.1} {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache....
内容详细记录了java面向对象的编程思想,java类集,IO编程以及JDBG,还有工厂设计等模式,相信会对java初学者有很大帮助
参考书籍(推荐): 《Java设计模式 - 刘伟》 , 《图解设计模式 - [日]结城浩》 创建型模式 :check_mark:简单工厂模式( Simple Factor Pattern ) :memo: , :check_mark:工厂方法模式( Factory Method Pattern )...
酒店管理客房系统Java源码 创建型模式:关注对象的创建过程 :保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 ...抽象工厂模式是工厂模式的一种升级版本。 :分离了对象子组件的单独构造(由Builder来负
Java Design Patterns 学习笔记 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
describe:设计模式学习笔记 逻辑结构图 代码结构图 设计模式简述 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式,共七种:适配器模式,装饰器模式,代理模式,...
工厂模式和单例模式(https://www.jb51.net/article/184230.htm)应该是设计模式中应用最多的模式了,工厂模式的定义:提供创建对象的接口(来自百度百科:http://baike.baidu.com/view/1306799.htm),意思就是根据...
学习笔记较长,如果想查看文章的目录,chrome浏览器可以配合简悦插件使用,或者下载到本地使用Typora打开。 :hot_beverage: Java基础 Java容器 Java并发 数据结构和算法 数据结构 树 图 算法 分治 动态规划 回溯 ...
Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...
031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统内建Annotation笔记.pdf 031602_【第16章:Annotation】_自定义Annotation笔记.pdf 031603_【第16章:Annotation】_反射...
java初学者的学习笔记,很详细。 目录 0 第一节 7月15日 2 一、 IT行业相关介绍 2 二、C、C++和Java语言的比较 2 三、 JDK基础介绍 2 四、 面向对象与面向过程的比较 2 五、 Java相关介绍 2 六、 Path和Classpath...