创建类模式包含工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,它们都可以提供对象的创建和管理职责。当中的单例模式和原型模式很easy理解,单例模式是要保持在内存中仅仅有一个对象,原型模式是要求通过复制的方式产生一个新对象。这两个不easy混淆。以下主要分析其他三种模式。

一、工厂方法模式VS建造者模式

 

1、意图不同

在工厂方法模式里,关注的是一个产品总体,无须关心产品的各部分是怎样创建出来的。但在建造者模式中,一个详细产品的产生是依赖各个部件的产生以及装配顺序。它关注的是“由零件一步一步地组装出产品对象”,简单地说,工厂模式是一个对象创建的粗线条应用。建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。

2、产品的复杂度不同

工厂方法模式创建的产品一般都 是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部件复合而成。部件不同产品对象当然不同。这不是说工厂方法模式创建的对象简单。而是指它们的粒度大小不同。

一般来说,工厂方法模式的对象粒度比較粗,建造者模式的产品对象粒度比較细。

 

实践:假设须要具体关注一个产品部件的生产、安装步骤,则选择建造者,否则工厂。

 

 

二、抽象工厂模式VS建造者模式

 

抽象工厂模式就像一个巨头有很多“工厂”,使用“工厂”来描写叙述构建者。而建造者模式就像一个工厂有很多“车间”。使用“车间”来描写叙述构建者。抽象工厂模式是从一个更高层次去看对象的创建。详细到工厂内部还有非常多车间。但这些都是隐藏在工厂内部的细节,对外不发布。

而建造者模式就不同了,它是由车间构成,不同的车间完毕不同的创建和装配任务,一个完整的汽车生产过程须要引擎制造车间、引擎装配车间的配合才干完毕,它们配合的基础就是设计蓝图,而这个蓝图在车间主任手中(导演类)。建造者模式更关心建造过程。

尽管从外界来看一个车间还是生产车辆,可是这个车间的转型是非常快的,仅仅要又一次设计一个蓝图。就可以产生不同的产品。

实践:相对来说,抽象工厂模式比建造者模式的尺度要大,它关注产品总体。

而建造者模式关注构建过程,因此建行者模式能够非常easy地构建出一个崭新的产品。仅仅要导演类能够提供详细的工艺流程。也正由于如此。假设希望屏蔽对象的创建过程,仅仅提供一个封装良好的对象,则能够选择抽象工厂方法模式。

而建造者模式能够用在构件的装配方面。如通过装配不同的组件或者同样组件的不同顺序,能够产生一个新的对象。它能够产生一个非常灵活的架构,方便地扩展和维护系统。

创建类模式大PK(总结)的更多相关文章

  1. 设计模式之创建类模式大PK

                                        创建类模式大PK 创建类模式包括工厂方法模式.建造者模式.抽象工厂模式.单例模式和原型模式,他们能够提供对象的创建和管理职责.其 ...

  2. 第26章 创建型模式大PK

    26.1 工厂方法模式 VS 建造者模式 26.1.1 按工厂方法建造超人 (1)产品:两类超人,成年超人和未成年超人. (2)工厂:这里选择简单工厂 [编程实验]工厂方法建造超人 //创建型模式大P ...

  3. 设计模式之行为类模式大PK

                                        行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...

  4. 设计模式之结构类模式大PK

                                      结构类模式大PK 结构类模式包括适配器模式.桥梁模式.组合模式.装饰模式.门面模式.享元模式和代理模式.之所以称其为结构类模式,是因 ...

  5. 设计模式之创建类模式PK

    创建类模式包括: 工厂方法模式 建造者模式 抽象工厂模式 单例模式 原型模式 创建类模式能够提供对象的创建和管理职责. 其中单例模式和原型模式非常容易理解, 单例模式是要保持在内存中只有一个对象,原型 ...

  6. 第28章 行为型模式大PK

    27.1 策略模式 VS 命令模式 27.1.1 策略模式实现压缩算法 //行为型模式大PK——策略模式和命令模式 //实例:用策略模式实现压缩算法 #include <iostream> ...

  7. 第27章 结构型模式大PK

    27.1 代理模式 VS 装饰模式 27.1.1 代理模式 (1)场景:客人找运动员代理要求安排运动员参加比赛 (2)说明:代理人有控制权,可以拒绝客人的要求,也可以答应安排,甚至自己下去跑(因为有些 ...

  8. ZT 创建类模式总结篇

    创建类模式总结篇 分类: 设计模式 2012-03-26 09:03 7320人阅读 评论(11) 收藏 举报 编程优化设计模式任务 创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户 ...

  9. 创建类模式(零):简单/静态工厂(Static Factory)

    定义 简单工厂模式属于创建型模式,但不属于23种GOF设计模式之一,这也是为什么该模式标记为零的原因.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的 ...

随机推荐

  1. 获取windows版本号

    原文:https://blog.csdn.net/justFWD/article/details/44856277 内容整理如下,点击跳至指定内容: manifest文件加上compatibility ...

  2. wpf Command 携带当前窗口

    Command="{Binding GoPayCommand}" CommandParameter="{Binding RelativeSource={RelativeS ...

  3. svn in xcode5

    两种办法,一是使用比较成熟的svn客户端,二是使用终端.以下为终端方法: 假设已经通过Xcode->Preferences->Accounts将repository: http://mys ...

  4. 笔试算法题(57):基于堆的优先级队列实现和性能分析(Priority Queue based on Heap)

    议题:基于堆的优先级队列(最大堆实现) 分析: 堆有序(Heap-Ordered):每个节点的键值大于等于该节点的所有孩子节点中的键值(如果有的话),而堆数据结构的所有节点都按照完全有序二叉树 排.当 ...

  5. 零基础入门学习Python(33)--异常处理:你不可能总是对的2

    知识点 异常处理 捕捉异常可以使用try/except语句. try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理. 如果你不想在异常发生时结束你的程序,只需 ...

  6. Python自动化测试-使用Pandas来高效处理测试数据

    一.思考 1.Pandas是什么? 功能极其强大的数据分析库 可以高效地操作各种数据集 csv格式的文件 Excel文件 HTML文件 XML格式的文件 JSON格式的文件 数据库操作 2.经典面试题 ...

  7. C语言学习4

    C/C++语言五大内存分区:堆.栈.自由存储区.全局/静态存储区和常量存储区 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的存储区,里面的变量通常是全局变量.函数参数等. 堆:就是那些 ...

  8. 转载:Django之Form组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 +? 1 2 3 ...

  9. STM32F407 IO引脚复用器和映射 个人笔记

    基本概念 stm32有一些内置外设,每个外设有一个复用功能AF(Alternate functions). stm32的每个io引脚东路有一个16路复用器,该复用器一端连该引脚,另外16端连AF0~A ...

  10. 用二分法计算a的n次幂<算法分析>

    实验目的:1.复习java编程:2.掌握二分法的基本原理:3.掌握使用java程序进行二分法计算a的n次幂.实验步骤:1.由用户输入a及n(均为整数):2.利用二分法完成计算,并将中间结果打印出来. ...