設計模式之禪筆記——建造者模式

一、建造者模式的定義

定義如下:

Separate the construction of a complex object from its representation so that the same construction process can create different representations(將一個複雜對象的構建與它的表示相分離,使得同樣的構建過程可以創建不同的表示)。

通用類圖:

在建造者模式中,有如下4個角色:

Product產品類:通常是實現了模板方法模式,也就是有模板方法和基本方法

Builder抽象建造者:規範產品的組建,一般由子類實現。

ConcreteBuilder具體建造者:實現抽象類定義的所有方法,並且返回一個組建好的對象。

Director導演類:負責安排已有模塊的順序,然後告訴Builder開始建造。

產品類:

public class Product {
    public void doSomething() {

    }
}

抽象建造者:

public abstract class Builder {
    public abstract void setPart();

    public abstract Product buildProduct();
}

具體建造者:

public class ConcreteBuilder extends Builder {
    private Product product = new Product();

    @Override
    public void setPart() {

    }

    @Override
    public Product buildProduct() {
        return product;
    }
}

導演類:

public class Director {
    private Builder builder = new ConcreteBuilder();

    public Product getAProduct() {
        builder.setPart();
        return builder.buildProduct();
    }
}

二、建造者模式的優缺點

優點:

封裝性:使用建造者可以使客戶端不必知道產品內部組成的細節。

建造者獨立,容易擴展

便於控制細節風險:由於具體的建造者是獨立的,因此可以對建造過程逐步細化,而不對其他的模塊產生任何影響

使用場景:

相同的方法,不同的執行順序,產生不同的事件結果時,可以採用建造者模式

多個部件或零件,都可以在、裝配到一個對象中,但是產生的運行結果又不相同,則可以使用該模式

產品類非常複雜,或者產品類中的調用順序不同產生了不同的效能,這個時候使用建造者模式非常合適。

在對象創建過程中會使用系統中的一些其他對象,這些對象在產品對象的創建過程中不易得到時,也可以採用建造者模式封裝該對象的創建過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章