設(shè)計(jì)模式學(xué)習(xí)筆記(十二)—Builder建造者模式
Posted on 2007-12-03 21:39 flustar 閱讀(1229) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Design PatternsBuilder模式定義:
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。
剛接觸到這個(gè)模式的時(shí)候,實(shí)在搞不明白它的意思,有什么用。于是,上網(wǎng)google了一圈,終于得到這個(gè)大家普遍認(rèn)可的解釋?zhuān)?br />
建造模式是一步一步創(chuàng)建一個(gè)復(fù)雜的對(duì)象,它允許用戶(hù)可以只通過(guò)指定復(fù)雜對(duì)象的類(lèi)型和內(nèi)容就可以構(gòu)建它們,用戶(hù)不知道內(nèi)部的具體構(gòu)建細(xì)節(jié)。
下面舉一個(gè)例子來(lái)說(shuō)明這個(gè)模式的使用,代碼如下:
import java.util.ArrayList;
interface Builder{
public void buildPartA();
public void buildPartB();
public void buildPartC();
public Product getProduct();
}
class Product{
private ArrayList<String> parts=new ArrayList<String>();
public void add(String part){
parts.add(part);
}
public void show(){
System.out.println("Product有以下幾部分構(gòu)成:");
for(String s:parts){
System.out.println(s);
}
}
}
class Worker implements Builder{
private Product product;
public void buildPartA() {
product=new Product();
product.add("A部分");
}
public void buildPartB() {
product.add("B部分");
}
public void buildPartC(){
product.add("C部分");
}
public Product getProduct(){
return product;
}
}
class Designer{
public void order(Builder builder){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
public class Test {
public static void main(String[] args) {
Designer designer=new Designer();
Builder builder=new Worker();
designer.order(builder);
Product product =builder.getProduct();
product.show();
}
}
輸出結(jié)果如下:
Product有以下幾部分構(gòu)成:
A部分
B部分
C部分
從這個(gè)例子我們可以看出Builder模式,是把建造對(duì)象的過(guò)程分成一部分一部分來(lái)完成的。
小結(jié):Builder模式主要是為了將構(gòu)建復(fù)雜對(duì)象的過(guò)程和它的部件解耦。使得我們不用去關(guān)心每個(gè)部件是如何組裝的。