定義:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示.
原理: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();