java開發中Bean的Builder模式簡析

1.傳統模式,通過構造器new出來

大量重載,添加屬性,則需要添加新的構造方法,不利於拓展

public class Animal {

    private String eyes;
    private String mouse;
    public Animal(String eyes, String mouse) {
             this.eyes = eyes;
             this.mouse = mouse;
          }
    public Animal(String eyes) {
        this.eyes = eyes;
    }
}

2.傳統javabean,set get出來

常用的bean構造模式,因爲構造過程被分到了幾個調用中,在構造中 JavaBean 可能處於不一致的狀態。類無法僅僅通過判斷構造器參數的有效性來保證一致性,需要我們付出額外的操作來保證它的線程安全

public class Animal {

    private String eyes;
    private String mouse;

    public String getEyes() {
        return eyes;
    }

    public void setEyes(String eyes) {
        this.eyes = eyes;
    }

    public String getMouse() {
        return mouse;
    }

    public void setMouse(String mouse) {
        this.mouse = mouse;
    }
}

 

3.Builder模式

解耦,邏輯清晰。

鏈式調用,使用靈活,易於擴展。

public class Animal<main> {

    final String eyes;
    final String mouse;

    public Animal(Builder builder) {
        this.eyes = builder.eyes;
        this.mouse = builder.mouse;
    }
    public static final class Builder{
        String eyes;
        String mouse;
        public Builder() {
            this.eyes = "人類眼睛";
            this.mouse = "人類嘴巴";
             }
        public Builder eyes(String eyes) {
            this.eyes = eyes;
            return this;
            }
        public Builder mouse(String mouse) {
            this.eyes = mouse;
            return this;
        }
        public Animal build() {
            return new Animal(this);
        }
    }
    public static void main(String[] args){
        Animal person = new Builder().eyes("andy eyes").build();
        System.out.print(person.toString());
    }

}

安卓的okhttp 在用此種方式。

發佈了27 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章