设计模式学习笔记(十四)——创建型模式总结

原创 2007年09月18日 17:35:00
 
设计模式学习笔记(十四)——创建型模式总结

       GoF23种设计模式中创建型模式有5种,分别是:Singleton单件模式、Abstract Factory抽象工厂模式、Builder生成器模式、Factory Method工厂方法模式、Prototype原形模式。下面分别总结这几种设计模式。

 

设计模式

GoF的描述

我的理解

Singleton单件模式

保证一个类仅有一个实例,并提供一个该实例全局的访问点

控制实体对象的数量

Abstract Factory抽象工厂模式

提供一个接口,让该接口负责创建一系列相关或者相互依赖的对象,无需指定他们的具体类

解决一个系列的对象变化的问题

Builder生成器模式

将一个复杂对象的构建与其表示向分离,使得同样的构建过程可以创建不同的表示

应对项目中一些复杂对象的创建工作。所谓复杂对象,是指:此对象中还含有其它的子对象

Factory Method工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化那个类。FactoryMethod使得一个类的实例化延迟到子类

解决的是“某个对象”的创建工作,由于需求的变化,这个对象常常面临着剧烈的变化,但是这个对象拥有的接口相对稳定。也就是说:枝节常常发生变化,但是枝节与主干的接口相对稳定

Prototype原形模式

使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象

某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口

      

在学习的过程中,觉得从功能上看Abstract Factory模式和Builder模式容易混淆,Factory Method模式和Prototype模式不好区分。Singleton模式没什么太大的困难。下面就来分析一下前四种模式。

一、Abstract Factory模式和Builder模式:

Abstract Factory是应对一系列对象的创建的问题,正如前面文章中举的例子,对于创建一个汽车对象来说,Abstract Factory模式更关注一系列的对象的创建,或者说是汽车类型中的各个部分,如:WheelEngineBody等等类型的创建。换句话说关注点在这一系列对象上。

Builder是应对一个复杂对象创建的问题,或者说是针对这个复杂对象中的子对象的创建的问题。以汽车的例子来说,我觉得比起Abstract Factory模式,Builder模式相对注重汽车类型(上面所说的“复杂对象”)本身以及其各个部分(WheelEngineBody等等)类型的创建。Builder模式要求这个复杂的类型(汽车)中的各个子类型的结合部分相对稳定,用例子说明就是对于汽车来说,无论用什么配件组装,个个配件的组装方式都一样,有相对稳定的接口。对于这辆车你用什么牌子的Wheel、什么牌子的Engine可能变化会很大很频繁。

二、Factory Method模式和Prototype模式:

开始我觉得这两种模式从功能上讲是一样的(个人观点),都是封装了对对象的创建,只不过Prototype模式是用原型克隆进行拷贝来完成对象的创建,在这之中还应注意浅拷贝和深拷贝的区别。在向同事请教后有点明白。这两种模式在应用场景上还是一定的区别的。

Factory Method模式是重新创建一个对象

Prototype模式是利用现有的对象进行克隆,当两个对象或多个对象雷同的时候,可以考虑用一个已创建的对象去克隆出其余的对象。
   以上是对创建型模式的总结,如有不对的观点欢迎指正。

相关文章推荐

十四、备忘录模式——设计模式学习笔记

备忘录模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。...

设计模式C++学习笔记之十四(Iterator迭代器模式)

14.1.解释 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 main(),客户 IProject,产品接口 CProject,产品类 ...

设计模式C++学习笔记之十四(Iterator迭代器模式)

设计模式C++学习笔记之十四(Iterator迭代器模式) 14.1.解释 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 main(),客户 IProj...

设计模式C++学习笔记之十四(Iterator迭代器模式)

设计模式C++学习笔记之十四(Iterator迭代器模式) 14.1.解释 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 main(),客户 IProj...

《Java编程思想_ 深入理解java虚拟机_Thinking in java__Effiect java__设计模式》学习笔记7——泛型编程基础

转载地址:http://blog.csdn.net/chjttony/article/details/6785221 还有相关的文章:http://blog.csdn.net/waldmer/a...

黑马程序员——Java学习笔记之12——已接触的“设计模式”总结

单例设计模式

【设计模式学习笔记十四】【行为模式】【职责链模式(Chain Of Responsibility)】

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 1)能够画出这个设计模式的架构框图; 2)...

[转]设计模式学习笔记——结构型模式总结

结构型设计模式是从程序的结构上解决模块之间的耦合问题(好像是句废话),GoF23种设计模式中结构型设计模式有7种,分别是:Adapter适配器模式、Bridge桥接模式、Composite组合模式、D...

设计模式学习笔记十四:适配器模式、桥接模式与外观模式

1.适配器模式与桥接模式的区别和联系      适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。      两种模式的...

设计模式学习(十四)————抽象工厂模式(使用Qt框架的反射技术——根据字符串动态创建类来实现)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类!这个例子也可以用简单工厂模式+反射+读取配置文件来完成,这样更加简洁!!!普通的抽象工厂模式下面通过一个模拟访问数据库...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式学习笔记(十四)——创建型模式总结
举报原因:
原因补充:

(最多只允许输入30个字)