設計模式 _第五招式_建造者模式
阿新 • • 發佈:2018-11-07
一、定義
建造者模式(Builder Pattern)叫做生成器模式,將一個複雜物件的構建與它表示分離,使得同樣的構造過程可以建立不同的表示,可以按照部件屬性有序的建立物件。
二、程式碼演示
建造者模式通用類圖
- Product產品類
通常是實現了模版方法模式,也就是有模版方法和基本方法。
public class Product {
public void doSomething(){
//獨立業務邏輯
}
}
- Builder抽象建造者
規範產品的組建,一般是由子類實現。
public abstract class Builder {
//設定產品的不同部分,已獲得不同的產品
public abstract void setPart();
//構造產品
public abstract Product buildProduct();
}
- ConcreteBuilder具體建造者
實現抽象類定義的所有方法,並且返回一組構建好的物件。
public class ConcreteProduct extends Builder {
Product product = new Product();
//設定產品零件
public void setPart(){
//產品類內的邏輯處理
}
//組建一個產品
public Product buildProduct(){
return product ;
}
}
- Director導演類
負責安排已有的模組的順序,然後告訴Builder開始構造
public class Director {
private Builder builder = new ConcreteProduct();
//構建不同的產品
public Product getAProduct(){
builder.setPart();
return builder.buildProduct();
}
}
三、優點
- 封裝性
使用建造者模式可以使客戶端不必知道產品內部組成的細節。 - 建造者獨立,容易擴充套件
每個建造者相互獨立,很好擴充套件。 - 便於控制細節風險
由於具體的建造者是獨立的,因此可以對建造者過程逐步細化,而不會對其它模組產生影響。
四、缺點
五、應用場景
- 相同的方法,不同的執行順序,產生不同的事件結果。
- 多個部件或零件,都可以封裝到一個物件中,但是產生的執行結果又不相同,則可以採用該模式。
- 產品類非常複雜,或者產品類中呼叫的順序不同,產生的結果不同,這非常時候建造者模式。
六、注意事項
- 建造者模式關注的是零件型別和裝配工藝(順序),這是它與工廠方法模式最大的不同地方,雖然都是建立類,但是注重點不同。
- 建造者模式常常需要和模版方法模式結合使用。