当一个对象非常复杂,为了区分构建过程和使用过程,使用一个Director类进行对象的构建,Builder规定了这个构建过程。
模式结构:
Builder:抽象建造者接口,规范各个组成部分的构建。
ConcreateBuilder:具体的建造者角色,实现组成部分的构建,并提供示例(getResult()方法)。
Product:产品角色,创建返回的对象。
Director:引导者角色。负责组装(构建)。
使用场景:
①、当创建对象复杂并且与其使用过程独立。
②、构造过程允许构造的对象有不同的标识。
创建一只狗的示例:
Builder:
public abstract class IBuilder {
abstract void buildHead();
abstract void buildBody();
abstract Dog getResult();
}
ConcreateBuilder:
public class DogBuilder extends IBuilder{
Dog d = new Dog();
@Override
void buildHead() {
// TODO Auto-generated method stub
d.add("head");
}
@Override
void buildBody() {
// TODO Auto-generated method stub
d.add("body");
}
@Override
Dog getResult() {
return d;
}
}
Product:
public class Dog {
StringBuilder entity = new StringBuilder();
public Dog(){}
public void add(String part){
entity.append(part);
}
}
Director:
public class Director {
IBuilder builder = null;
public Director(IBuilder builder){
this.builder = builder;
}
public void construct(){
builder.buildBody();
builder.buildHead();
}
}
就类似要建造一栋房子,由工人(Builder)进行建造,由工头(Director)指挥建造,最终由建造者工人提交成品。