Builder模式

我的博客java

http://www.milovetingting.cnide

Builder模式

模式介紹

Builder模式是一步一步建立一個複雜對象的建立型模式,它容許用戶在不知道內部構建細節的狀況下,能夠更精細地控制對象的構建流程。該模式是爲了將構建複雜對象的過程和它的部件解耦,使得構建過程和部件的表示隔離開來。ui

模式定義

將一個複雜對象的構建與它的表示分離,使得一樣的構建能夠建立不一樣的表示。this

使用場景

  1. 相同的方法,不一樣的執行順序,產生不一樣的事件結果時。日誌

  2. 多個部件或零件,均可以裝配到一個對象中,可是產生的運行結果又不相同時。code

  3. 產品類很是複雜,或者產品類中的調用順序不一樣產生了不一樣的做用。對象

  4. 當初始化一個對象特別複雜,如參數多,且不少參數都具備默認值時。事件

模式的簡單實現

Computer類開發

public class Computer {

    private String mCpu;
    private String mScreen;
    private String mHd;

    public Computer(String cpu, String screen, String hd) {
        this.mCpu = cpu;
        this.mScreen = screen;
        this.mHd = hd;
    }

    @Override
    public String toString() {
        return "Computer [mCpu=" + mCpu + ", mScreen=" + mScreen + ", mHd=" + mHd + "]";
    }

}

ComputerBuilder類get

public class ComputerBuilder {

    public static class Builder {

        private String mCpu = "cpu";
        private String mScreen = "screen";
        private String mHd = "hd";

        public Builder cpu(String cpu) {
            mCpu = cpu;
            return this;
        }

        public Builder screen(String screen) {
            mScreen = screen;
            return this;
        }

        public Builder hd(String hd) {
            mHd = hd;
            return this;
        }

        public Computer build() {
            return new Computer(mCpu, mScreen, mHd);
        }

    }

}

默認使用

public static void main(String[] args) {
        Computer computer = new ComputerBuilder.Builder().build();
        System.out.println(computer);
    }

輸出日誌

Computer [mCpu=cpu, mScreen=screen, mHd=hd]

自定義參數

public static void main(String[] args) {
        Computer computer = new ComputerBuilder.Builder().cpu("CPU").screen("SCREEN").hd("HD").build();
        System.out.println(computer);
    }

輸出日誌

Computer [mCpu=CPU, mScreen=SCREEN, mHd=HD]

小結

Builder模式在Android開發中較爲經常使用,一般做爲配置類的構建器,將配置的構建和表示分離開來,同時也是將配置從目標類中隔離出來,避免過多的setter方法。Builder模式比較常見的實現形式是經過調用鏈實現,使得代碼更簡潔、易懂。

相關文章
相關標籤/搜索