重学设计模式 - Builder模式
2012-05-22 11:39
288 查看
1、意图
将一个复杂对象的构建与它的表示分离开,使得同样的构建过程可以创建不同的表示。
2、问题
创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式。
构造过程必须允许被构造的对象有不同的表示。
3、解决方案
将复杂对象的构造方法独立出来。
4、通用结构
![](http://my.csdn.net/uploads/201205/22/1337650710_6784.png)
5、参与者
builder:为创建一个Product的各个部件指定抽象接口。
ConcreteBuilder:实现Builder的各个接口以构造和装配该产品的的各个部件;定义并明确它所创建的表示;提供一个查询产品的接口。
Director:构造一个使用Builder接口的对象。
Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程;包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
6、协作
客户创建Director对象并使用它所想要的Builder对象进行配置;
一旦产品部件被生成,Director(导向器)将会通知Builder(生成器);
Builder处理Director的请求,并将该部件添加到该产品中;
客户从Builder中得到产品结果。
7、效果
很容易改变一个产品的内部表示: 因为产品是通过抽象接口构造的,在改变一个产品的内部表示时只需要创建一个新的生成器。
将构造代码和表示代码分开:客户不需要知道定义产品内部结构的类的所有信息。
对构造过程进行更精细的控制
8、实现
Builder类的接口需要足够普遍,以便为各种类型的具体生成器构造产品。
C++中,声明Builder类的抽象接口不声明为纯虚函数,而是把他们定义为空方法,这是客户只需重定义他们感兴趣的操作。
9、实例
将一个复杂对象的构建与它的表示分离开,使得同样的构建过程可以创建不同的表示。
2、问题
创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式。
构造过程必须允许被构造的对象有不同的表示。
3、解决方案
将复杂对象的构造方法独立出来。
4、通用结构
![](http://my.csdn.net/uploads/201205/22/1337650710_6784.png)
5、参与者
builder:为创建一个Product的各个部件指定抽象接口。
ConcreteBuilder:实现Builder的各个接口以构造和装配该产品的的各个部件;定义并明确它所创建的表示;提供一个查询产品的接口。
Director:构造一个使用Builder接口的对象。
Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程;包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
6、协作
客户创建Director对象并使用它所想要的Builder对象进行配置;
一旦产品部件被生成,Director(导向器)将会通知Builder(生成器);
Builder处理Director的请求,并将该部件添加到该产品中;
客户从Builder中得到产品结果。
7、效果
很容易改变一个产品的内部表示: 因为产品是通过抽象接口构造的,在改变一个产品的内部表示时只需要创建一个新的生成器。
将构造代码和表示代码分开:客户不需要知道定义产品内部结构的类的所有信息。
对构造过程进行更精细的控制
8、实现
Builder类的接口需要足够普遍,以便为各种类型的具体生成器构造产品。
C++中,声明Builder类的抽象接口不声明为纯虚函数,而是把他们定义为空方法,这是客户只需重定义他们感兴趣的操作。
9、实例
![](http://my.csdn.net/uploads/201205/22/1337658023_7292.png)
相关文章推荐
- 设计模式之Builder模式
- Android设计模式——Builder模式
- 面向对象设计模式之---建造者模式(Builder Pattern)
- 设计模式之Builder
- 设计模式学习之路——Builder 生成器模式
- 设计模式学习之建造者模式(Builder,创建型模式)(6)
- 设计模式-创建型-builder生成器
- PHP设计模式——建造者模式(builder)
- 设计模式(三):Builder模式
- 设计模式之创造者模式 Builder
- Python实现设计模式--05.建造者模式(Builder Pattern)
- Android 设计模式实战 Builder模式
- 三、设计模式之二----Builder模式
- C#设计模式之建造者(Builder)模式示例源代码
- 【原】iOS设计模式之:建造者模式Builder Pattern,用于改进初始化参数
- 几种创建型的设计模式概析【下】——Builder模式,ProtoType模式【C++实现】
- Android设计模式之建造者模式(builder pattern)
- 浅谈 java 设计模式--构建模式(Builder pattern)
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式5:Builder Pattern(建造者模式)