1. 程式人生 > >設計模式 _第五招式_建造者模式

設計模式 _第五招式_建造者模式

一、定義
建造者模式(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(); } }

三、優點

  • 封裝性
    使用建造者模式可以使客戶端不必知道產品內部組成的細節。
  • 建造者獨立,容易擴充套件
    每個建造者相互獨立,很好擴充套件。
  • 便於控制細節風險
    由於具體的建造者是獨立的,因此可以對建造者過程逐步細化,而不會對其它模組產生影響。

四、缺點

五、應用場景

  • 相同的方法,不同的執行順序,產生不同的事件結果。
  • 多個部件或零件,都可以封裝到一個物件中,但是產生的執行結果又不相同,則可以採用該模式。
  • 產品類非常複雜,或者產品類中呼叫的順序不同,產生的結果不同,這非常時候建造者模式。

六、注意事項

  • 建造者模式關注的是零件型別和裝配工藝(順序),這是它與工廠方法模式最大的不同地方,雖然都是建立類,但是注重點不同。
  • 建造者模式常常需要和模版方法模式結合使用。