建造者模式(builder)構(gòu)建模式
定義將一個對象的復(fù)雜構(gòu)建過程和表示分離開
含義
就是將對象的復(fù)雜的構(gòu)建過程分離開,已達(dá)到解耦過程和部件。
為何試用
例如你需要加工手機(jī),如果每個型號的手機(jī)都有一個加工組裝廠,會不會感覺很多余呀。你只需要建造一個組裝廠即可,安裝的過程嗎肯定都是一樣的。所以你給我什么型號的手機(jī)部件我就給你組裝什么型號的手機(jī)。這樣將手機(jī)的組裝和手機(jī)的部件有效的分離開減少耦合。而且有利于維護(hù),比如說有一天手機(jī)天線不需要外置了,都已經(jīng)內(nèi)置了。那只要告訴組裝廠減去裝外置天線的哪一步就夠了。
例子:
public interface Builder {
//創(chuàng)建部件A
void buildPartA();
//創(chuàng)建部件B
void buildPartB();
//返回最后組裝成品結(jié)果
//成品的組裝過程不在這里進(jìn)行,而是轉(zhuǎn)移到下面的Director類中進(jìn)行.
//從而實現(xiàn)了解耦過程和部件
Product getResult();
}
public class Director {
private Builder builder;
public Director( Builder builder ) {
this.builder = builder;
}
// 將部件partA partB最后組成復(fù)雜對象
public void construct() {
builder.buildPartA();
builder.buildPartB();
}
}
public class ConcreteBuilder implements Builder {
Part partA, partB;
public void buildPartA() {
//這里是具體如何構(gòu)建partA的代碼
};
public void buildPartB() {
//這里是具體如何構(gòu)建partB的代碼
};
public Product getResult() {
//返回最后組裝成品結(jié)果
};
}
我們看看如何調(diào)用Builder模式:
ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director( builder );
director.construct();
Product product = builder.getResult();
posted on 2012-03-15 22:51 海峰 閱讀(109) 評論(0) 編輯 收藏 所屬分類: 設(shè)計模式