我理解的--java建造者模式

給人的直觀感受是把行爲從類中抽象出來,類提要求,其功能實現是藉助別的類(builder)提供的函數,讓builder提供行爲。相對來講這個模式不是太難。java


builder把類中相同的代碼抽象了出來,實現了代碼的複用。一樣的builder一樣能夠擴展功能。設計模式


builder接口:行爲的基類。建不一樣的行爲集合。ide

interface Builder {
    void buildA();

    void buildB();

    void buildC();
}

ABuilder具體的行爲提供者。函數

public class ABuilder implements Builder {

    @Override
    public void buildA() {
        System.out.println("造A型房子步驟1");

    }

    @Override
    public void buildB() {
        System.out.println("造A型房子步驟2");

    }

    @Override
    public void buildC() {
        System.out.println("造A型房子步驟3");

    }

}

client 提要求的客戶。測試

public class Client {
    Builder builder;

    Client(Builder builder) {
        this.builder = builder;
    }

    void getHome() {
        builder.buildA();
        builder.buildB();
        builder.buildC();
        System.out.println("A型房子完成");
    }
}

測試ui

class Test {

    public static void main(String[] args) {
        ABuilder home = new ABuilder();
        Client client = new Client(home);
        client.getHome();

    }

}


結果:this

造A型房子步驟1
造A型房子步驟2
造A型房子步驟3
A型房子完成

提示:看了好多設計模式,你會發現裏面的構造共同處:在A類中引用B接口,C類實現B接口提供函數,在A中委託給C類實現。這是java多態精髓所在。
spa

相關文章
相關標籤/搜索