Builder 生成器模式

原创 2013年12月03日 11:21:43

1.概要
1.1意图

         将复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。需要注意如下几点。
(1)构建与表示分离:表明生成器模式的结构,构建过程被封装在导航器中,生成器则负责实现具体的表示。
(2)同样的构建过程:生成器模式关注的是构建过程,即构建过程是相同的。
(3)不同的表示:生成器模式并不在意产生对象的结果,其构造的产品不一定有相同的类型。

1.2使用场合
        创建复杂对象的算法应该独立于该对象的组成部分及其装配方式,以及构造过程必须允许被构造的对象有不同表示情况下使用生成器模式。

1.3结构
生成器模式的结构如图所示。



(1)Builder:为创建Product对象的各个部件指定抽象接口。
(2)ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并
明确它所创建的表示,并提供一个检索产品的接口。
(3)Director:构造一个使用Builder接口的对象。
(4)Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定
义它的装配过程,包含定义组成部件的类,以及将这些部件装配成最终产品的接口。

 

 

 

 

 

2.效果
          采用生成器模式可以轻松地改变产品的内部表示,上例中的脸谱画得不太好。但是如果我们创建一个新的生成器,艺术地绘制脸谱的各个部分,即可改善脸谱的质量。而这项工作完全可以和程序主体分离,由一位爱好美术的程序员独立完成。
          生成器模式将构造代码和表示代码分开,一个脸谱可以用位图、字符串或对象模型来表示,构造代码完全一致。
         构造过程可以更精细地控制,生成器模式强调的是产品的构造过程,产品各部分具有依赖关系非常重要。
         需要注意的是,不同生成器产生的对象可能不属于同一类型,因此使用生成器的客户必须知道产品的具体类型。例如在创建脸谱的示例中,产生的GUI脸谱和脸谱对象是完全不同的类型。这意味着生成器经常不能互换,不同的生成器针对的客户程序也不相同。

3.生成器模式与抽象工厂的区别
         生成器模式关注于将构造对象的过程和构造的各个部分分开 ,而抽象工厂关注于构建一个产品系列 。实际上,最大的区别是生成器模式创建的产品不一定有共同的父 类,只要有类似的构造过程即可。在上例中,FaceBuilder仅仅抽象了构建过程,并没有规定一定产生的产品类型,具体的产品由具体的Builder 类决定。从上例产生的一个简单的Graphics对象中我们可以获得一个脸谱的位图,但也可用相同的导航器和结构获得一个Face对象。
         实际上我们常见到的文件资源管理器的实现完全可以使用生成器模式。由于时间关系,这里不再讲述。有可能在以后的模式中涉及到这些。

  • 6a4499e2-707d-31ba-b16a-6199264b67fb-thumb.jpg
  • 大小: 22 KB

JAVA设计模式 — 生成器模式(Builder)

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:对象创建型模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,...
  • FX_SKY
  • FX_SKY
  • 2013年01月05日 16:08
  • 8424

Builder(生成器模式)

Builder是创建模式的一种设计模式,它的思想是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 应用场景 在以下情况使用Build模式: 1) 当创建复杂对象的...
  • fcunren
  • fcunren
  • 2014年08月26日 15:48
  • 311

创建型模式——生成器模式(Builder Pattern)

一. 生成器模式简介  生成器模式也有称为建造者模式。生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF)。在软件设计中,有时候面临着一个非常复杂的对象的...
  • zerowzj
  • zerowzj
  • 2008年04月07日 11:00
  • 751

设计模式(2)-抽象工厂模式(Abstract Factory)与生成器模式(Builder)模式

抽象工厂和生成器模式常常被混淆,因为他们之间实在有很多的相似点,比如都是创建型模式,都隐藏产品具体细节,都向用户提供一个包含一系列接口的对象。 这个说法比较抽象。我们通过实现来看看为什么容易混淆。抽...
  • m0_37182645
  • m0_37182645
  • 2017年11月06日 22:42
  • 122

生成器模式(Builder)

8.1  场景问题 8.1.1  继续导出数据的应用框架       在讨论工厂方法模式的时候,提到了一个导出数据的应用框架。       对于导出数据的应用框架,通常在导出数据上,...
  • qilixiang012
  • qilixiang012
  • 2014年09月24日 22:23
  • 688

Builder——生成器模式

一、定义       GOF上对生成器模式的意图如此描述:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。       具体来说,生成器模式将一个复杂对象的构造逻辑从其代码中...
  • tonghu2010
  • tonghu2010
  • 2014年01月10日 10:50
  • 701

生成器模式(Builder)

把复杂的对象的构建与其表示分离开,以便根据程序的需要在相同的创建过程中创建不同的表示。每个生成器必须有一个相同的方法名称。Client创建一个Director对象,指定一个build对象,配置Dire...
  • tyrone1979
  • tyrone1979
  • 2005年08月29日 16:52
  • 1075

Builder - 生成器模式

定义 生成器模式是一步一步的创建一个复杂的对象,将一个复杂的对象的构建与它的表示分离,使得同样的构建过程构建不同的表示。 案例 设计一个文本编辑器,它可以把文件内容保存各...
  • Harrising
  • Harrising
  • 2014年07月01日 22:24
  • 299

设计模式——生成器模式(Builder Pattern)

生成器模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的主要思想是抽象出创建对象的步骤,使得这些步骤的不同实现可以创建不同的对象表示。...
  • u013038616
  • u013038616
  • 2015年01月06日 22:47
  • 525

设计模式之Builder(生成器模式)

板桥里人 http://www.jdon.com 2002/05/07Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.Builder模式是一步一步创建...
  • wylwhd
  • wylwhd
  • 2011年03月04日 09:44
  • 377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Builder 生成器模式
举报原因:
原因补充:

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