创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,它们都能够提供对象的创建和管理职责。其中的单例模式和原型模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新对象,这两个不容易混淆。下面主要分析其它三种模式。
一、工厂方法模式VS建造者模式
1、意图不同
在工厂方法模式里,关注的是一个产品整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”,简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。
2、产品的复杂度不同
工厂方法模式创建的产品一般都 是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部件复合而成,部件不同产品对象当然不同。这不是说工厂方法模式创建的对象简单,而是指它们的粒度大小不同。一般来说,工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。
实践:如果需要详细关注一个产品部件的生产、安装步骤,则选择建造者,否则工厂。
二、抽象工厂模式VS建造者模式
抽象工厂模式就像一个巨头有许多“工厂”,使用“工厂”来描述构建者,而建造者模式就像一个工厂有许多“车间”,使用“车间”来描述构建者。抽象工厂模式是从一个更高层次去看对象的创建,具体到工厂内部还有很多车间,但这些都是隐藏在工厂内部的细节,对外不公布。而建造者模式就不同了,它是由车间构成,不同的车间完成不同的创建和装配任务,一个完整的汽车生产过程需要引擎制造车间、引擎装配车间的配合才能完成,它们配合的基础就是设计蓝图,而这个蓝图在车间主任手中(导演类)。建造者模式更关心建造过程。虽然从外界来看一个车间还是生产车辆,但是这个车间的转型是非常快的,只要重新设计一个蓝图,即可产生不同的产品。
实践:相对来说,抽象工厂模式比建造者模式的尺度要大,它关注产品整体。而建造者模式关注构建过程,因此建行者模式可以很容易地构建出一个崭新的产品,只要导演类能够提供具体的工艺流程。也正因为如此,如果希望屏蔽对象的创建过程,只提供一个封装良好的对象,则可以选择抽象工厂方法模式。而建造者模式可以用在构件的装配方面,如通过装配不同的组件或者相同组件的不同顺序,可以产生一个新的对象,它可以产生一个非常灵活的架构,方便地扩展和维护系统。
相关推荐
P2P资金托管模式大PK:“联合存管”料成趋势.pptx
第30章 创建类模式大PK 30.1 工厂方法模式VS建造者模式 30.1.1 按工厂方法建造超人 30.1.2 按建造者模式建造超人 30.1.3 最佳实践 30.2 抽象工厂模式VS建造者模式 30.2.1 按抽象工厂模式生产车辆 30.2.2 按建造者...
策略模式[STRATEGY PATTERN] 代理模式[PROXY PATTERN] 单例模式[SINGLETON PATTERN] ...模式大PK 六大设计原则:单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则,开闭原则。
位图PK还蛮经典的,每组都创建一个无基类来处理,特别是位图处理方面,运行的还可以,自我感觉良好,这也算是我学习MFC以来的一种突破吧。顺便也告诉大家一个不好的消息,程序中有一个BUG,就是刷新时总是闪动?也...
直接向用友nc数据插入数据时,pk字段是每个表的主建字段.
客所思pk3驱动是一款声卡驱动软件,主要解决众多语音程序不兼容问题,在电脑上安装后,可以体验语音对聊...驱动介绍这款客所思PK3拥有6种工作模式,分别是音乐(麦克风输入关闭)、聊天、听湿录干、唱歌、,欢迎下载体验
pk法求颤振,可以求得机翼的颤振速度,提供参考
西门子,PK,Parasolid 函数说明
微信公众号h5,pk10赛车游戏源码 需要有workerman基础
PK脚本小PK脚本小合集.exe
可靠性分析软件大PK.pdf可靠性分析软件大PK.pdf可靠性分析软件大PK.pdf可靠性分析软件大PK.pdf可靠性分析软件大PK.pdf可靠性分析软件大PK.pdf
天天PK
使用PK-Tether0.6.0版可以进入工程模式。 以下是操作步骤: 1. 用USB连接线连接相机 2. 打开软件 3. 相机开机 4. 自动安装好驱动 5. 选择Debug mode->Camera debug mode on 6. 在相机上操作选择中文菜单 7. 选择...
采用PK进行UG NX二次开发,现在看到的文章很多是直接创建实体,然后在UG NX的视图区显示出来,对于创建圆曲线的文章不多。这里是创建曲线的源代码,
象棋大PK作文.doc
java 设计模式之禅 6大设计原则 23种设计模式 设计模式pk 设计模式混淆应用
PK10 软件模板、VBA自动标记指定字符
第 25 章 模式大PK 289 第 26 章 六大设计原则 290 26.1 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】 290 26.2 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】 297 26.3 依赖倒置原则...
如题呀,也没啥好说的嘛。主要是自己当时搜索PK8文件的时候,全是关于Android的东西,根本就是误导人,好伐,发个这个文档,给其他人一个方向吧!