定義
將一個對象的復雜構建過程和表示分離開
含義
就是將對象的復雜的構建過程分離開,已達到解耦過程和部件。
為何試用
例如你需要加工手機,如果每個型號的手機都有一個加工組裝廠,會不會感覺很多余呀。你只需要建造一個組裝廠即可,安裝的過程嗎肯定都是一樣的。所以你給我什么型號的手機部件我就給你組裝什么型號的手機。這樣將手機的組裝和手機的部件有效的分離開減少耦合。而且有利于維護,比如說有一天手機天線不需要外置了,都已經內置了。那只要告訴組裝廠減去裝外置天線的哪一步就夠了。
例子:
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();