Franky's LIFE

Anything... ...

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  53 随笔 :: 87 文章 :: 6 评论 :: 0 Trackbacks
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 模式更关注一系列的对象的创建,或者说是汽车类型中的各个部分,如: Wheel Engine Body 等等类型的创建。换句话说关注点在这一系列对象上。

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

二、 Factory Method 模式和 Prototype 模式:

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

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

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

posted on 2007-03-19 21:03 Franky 阅读(146) 评论(0)  编辑  收藏 所属分类: IT知识

只有注册用户登录后才能发表评论。


网站导航: