構(gòu)造者模式

1. 概念

構(gòu)造者模式是較為復(fù)雜的創(chuàng)建型模式,它將客戶端與包含多個組成部分的復(fù)雜對象的創(chuàng)建過程分離。客戶端無需知道具體的構(gòu)造過程,只需要與構(gòu)造器打交道即可。構(gòu)建與表示分離。

2. 使用場景

當構(gòu)造一個對象需要很多參數(shù)的時候,并且參數(shù)的個數(shù)或者類型不固定的時候。

3. 實例

abstract class Builder {
    protected Product product = new Product();

    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract void buildPartC();

    public Product getResult() {
        return product;
    }

}
public class ConcreateBuilder extends Builder {
    @Override
    public void buildPartA() {

    }

    @Override
    public void buildPartC() {

    }

    @Override
    public void buildPartB() {

    }
}
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }
    public void setBuilder(Builder builder) {
        this.builder = builder;
    }
    public Product construct() {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}
public class Product {
    public String getPartA() {
        return partA;
    }

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public String getPartB() {
        return partB;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public String getPartC() {
        return partC;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    private String partA;
    private String partB;
    private String partC;

}
public class BuilderClient {
    public static void main(String[] args) {
        Builder builder = new ConcreateBuilder();
        Director director = new Director(builder);
        Product product = director.construct();
    }
}

4. 總結(jié)

Builder:它為創(chuàng)建一個產(chǎn)品Product對象的各個部件指定抽象接口
ConcreateBuilder:它實現(xiàn)了Builder接口,實現(xiàn)各個部件的具體構(gòu)造和裝配方法
Product:它是被構(gòu)建的復(fù)雜對象,包含多個組成部件
Director:指揮者又稱為導(dǎo)演類,它負責(zé)安排復(fù)雜對象的建造次序,指揮者與抽象建造者之間存在關(guān)聯(lián)關(guān)系

不過在具體的使用中,可能客戶端直接調(diào)用了ConcreateBuilder中的實際方法,而省略了Director。

5. 模式特性

松散耦合:生成器模式可以用同一個構(gòu)建算法構(gòu)建出表現(xiàn)上完全不同的產(chǎn)品,實現(xiàn)產(chǎn)品構(gòu)建和產(chǎn)品表現(xiàn)上的分離。
可以很容易的改編產(chǎn)品的內(nèi)部表示,同時又不用客戶端再次適配
更好的復(fù)用性:生成器模式很好的實現(xiàn)構(gòu)建算法和具體產(chǎn)品實現(xiàn)的分離

會產(chǎn)生多余的Builder對象,消耗內(nèi)存
對象的構(gòu)建過程暴露

6. 在android中的實際運用

AlertDialog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容