定义
将一个对象的复杂构建过程和表示分离开
含义
就是将对象的复杂的构建过程分离开,已达到解耦过程和部件。
为何试用
例如你需要加工手机,如果每个型号的手机都有一个加工组装厂,会不会感觉很多余呀。你只需要建造一个组装厂即可,安装的过程吗肯定都是一样的。所以你给我什么型号的手机部件我就给你组装什么型号的手机。这样将手机的组装和手机的部件有效的分离开减少耦合。而且有利于维护,比如说有一天手机天线不需要外置了,都已经内置了。那只要告诉组装厂减去装外置天线的哪一步就够了。
例子:
public interface Builder {
//创建部件A
void buildPartA();
//创建部件B
void buildPartB();
//返回最后组装成品结果
//成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
//从而实现了解耦过程和部件
Product getResult();
}
public class Director {
private Builder builder;
public Director( Builder builder ) {
this.builder = builder;
}
// 将部件partA partB最后组成复杂对象
public void construct() {
builder.buildPartA();
builder.buildPartB();
}
}
public class ConcreteBuilder implements Builder {
Part partA, partB;
public void buildPartA() {
//这里是具体如何构建partA的代码
};
public void buildPartB() {
//这里是具体如何构建partB的代码
};
public Product getResult() {
//返回最后组装成品结果
};
}
我们看看如何调用Builder模式:
ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director( builder );
director.construct();
Product product = builder.getResult();