- 动机:构建与表示分离
- 结构:
3.角色:
-
- 抽象建造者
- 具体建造者
- 指挥者
- 产品
5.优缺点:
-
- 优点:
- 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦
- 每一个具体建造者都相对独立,而与其他的具体建造者无关。户使用不同的具体建造者即可得到不同的产品对象
- 增加新的具体建造者无需修改原有类库的代码,系统扩展方便
- 缺点:
- 如果产品之间的差异性很大,不适合使用建造者模式
- 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
- 优点:
6.适用:
-
- 需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性
- 需要生成的产品对象的属性相互依赖,需要指定其生成顺序
- 对象的创建过程独立于创建该对象的类
- 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同类型的产品
7.代码
/**
* 产品
*
@author
ilmlife(ilmlife @126.com)
*
<pre>
2013
-
12
-
16下午11:22:58
</pre>
*/
public
class
Product {
}
/**
* 抽象建造者
*
@author
ilmlife(ilmlife @126.com)
*
<pre>
2013
-
12
-
16下午11:30:50
</pre>
*/
public
abstract
class
Builder {
/**
* 构造第一部分
*/
public
abstract
void
buildPart1();
/**
* 构造第二部分
*/
public
abstract
void
buildPart2();
/**
* 获取构造结果
*
@return
*/
public
abstract
Product getResult();
}
/**
* 具体建造者
*
@author
ilmlife(ilmlife @126.com)
*
<pre>
2013
-
12
-
16下午11:33:24
</pre>
*/
public
class
ConcreteBuilder
extends
Builder {
private
Product
product
=
new
Product();
@Override
public
void
buildPart1() {
//
TODO
Auto-generated method stub
}
@Override
public
void
buildPart2() {
//
TODO
Auto-generated method stub
}
@Override
public
Product getResult() {
return
product
;
}
}
/**
* 指挥者
*
@author
ilmlife(ilmlife @126.com)
*
<pre>
2013
-
12
-
16下午11:34:35
</pre>
*/
public
class
Director {
private
Builder
builder
;
public
void
construct(){
builder
=
new
ConcreteBuilder();
builder
.buildPart1();
builder
.buildPart2();
builder
.getResult();
}
}