定義(又名生產(chǎn)器模式):
- 將一個復(fù)雜對象的構(gòu)建與它的表示分離绷耍,使得同樣的構(gòu)建過程可以產(chǎn)生不同的表示。
通用類圖:
建造者模式通用類圖
/*
*定義產(chǎn)品類,通常為實現(xiàn)模板模式方法的具體執(zhí)行類
* */
public class Product {
public void doSomething() {
// 獨立的業(yè)務(wù)邏輯
}
}
public abstract class Builder {
//設(shè)置產(chǎn)品的不同部分隐锭,以獲得不同的產(chǎn)品
public abstract void setPart();
//建造產(chǎn)品
public abstract Product buildProduct();
}
/*
* 創(chuàng)建具體的建造者渐扮,有多個產(chǎn)品類就有幾個具體的建造者论悴,而且這些多個產(chǎn)品具有相同的接口或者抽象類
* */
public class ConcreteProductBuilder extends Builder {
Product product = new Product();
@Override
public void setPart() {
// 特有的內(nèi)部邏輯處理
}
@Override
public Product buildProduct() {
// TODO Auto-generated method stub
return product;
}
}
/*
* 創(chuàng)建導(dǎo)演類
* */
public class Director {
Builder productBuilder = new ConcreteProductBuilder();
//構(gòu)建不同的產(chǎn)品
public Product getProduct(){
productBuilder.setPart();
return productBuilder.buildProduct();
}
}
public class Client {
public static void main(String[] args) {
Director director = new Director();
director.getProduct();
}
}
建造者模式的優(yōu)點:
- 具有良好的封裝性
- 建造者獨立,容易拓展墓律,具體的建造者是相互獨立的膀估,有利于系統(tǒng)的拓展
- 便于控制細(xì)節(jié)風(fēng)險,具體的建造者相互獨立耻讽,可以對建造的過程逐步細(xì)化察纯,而不對其他的模塊產(chǎn)生影響
常見的使用場景:
- 多個部件或零件,都可以裝配到一個對象中针肥,但是運行的結(jié)果又不相同時
- 產(chǎn)品類較復(fù)雜饼记,或者產(chǎn)品類中的調(diào)用順序不同產(chǎn)生不同的效能