定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
原理:Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到.
实现:
创建接口,定义如何创建复杂对象的各个部件
public interface Builder{
//创建部件A
void buildPartA();
//创建部件B
void buildPartB();
//创建部件C
void buildPartC();
//组装
Product getResult();
}
Director构建最后复杂的对象,上面接口分装的是如何创建一个个部件
public class Director{
private Builder builder;
public Director(Builder builder){this.builder = builder;}
//下面是将部件组装过程
public void construct(){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
Builder的具体实现创建Builder
public class ConcreateBuilder implements Builder{
Part partA,partB,partC;
//这里写构建部件A代码
public void buildPartA(){
}
//这里写构建部件B代码
public void buildPartB(){
}
//这里写构建部件C代码
public void buildPartC(){
}
//返回最后组装成果
public Product getResult(){
}
}
产品接口
public interface Product{}
部件接口
public interface Part{}
部件模式使用:
ConcreateBuilder builder = new ConcreateBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();