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

生成器(Builder)设计模式

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 如下图所示:   生成器模式的参与者包括 Builder、ConcreteBuild...

生成器模式(Builder Pattern )

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

Builder生成器(创建型模式)

如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正... 分析,构建房屋的组成结构是稳定的,但是房屋的窗口,门的风格可能并不固定 动机(Mo...

创建型模式-生成器(builder)

生成器将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.实例main.cc:/* design_patterns:"builder" In the production of ...

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

Builder解决的问题 Builder(生成器)的模式用于用多个部件生成不同产品的问题: Builder模式适用于: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时 当构...

什么是builder 生成器模式

http://www.blogjava.net/renyangok/articles/59814.html Builder模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以...

1.2 Builder(生成器) -- 对象创建型模式

在内蒙古这辽阔的草原上,放养着成千上万的奶牛。蒙牛集团在这里崛起,迅速抢占中国大半牛奶市场,造就了一个商业帝国。蒙牛集团牛奶生产流程大致是这样的: 放养奶牛--->牛奶加工--->牛奶包装--->销售...

三、Builder 生成器模式(创建型)

三、Builder 生成器模式(创建型) 1、意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 2、场景:在电脑城装机总有这样的经历。我们到了店里,先会有一个销售人员来...

Builder(生成器模式)

名  称 Builder(生成器模式) 意  图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适  用 环  境 当创建复杂对象的算法应该独立于该对象的组成部分以及它们...
  • wkcgy
  • wkcgy
  • 2011年06月22日 08:36
  • 189

Builder(生成器模式)

Builder是创建模式的一种设计模式,它的思想是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 应用场景 在以下情况使用Build模式: 1) 当创建复杂对象的...
  • fcunren
  • fcunren
  • 2014年08月26日 15:48
  • 278
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Builder 生成器模式
举报原因:
原因补充:

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