1. 程式人生 > >程式碼優化----使用builder模式構造物件

程式碼優化----使用builder模式構造物件

看《effective java》的時候,建立物件章節提到使用builder模式來建立物件。覺得非常好用,做一個記錄。以後應該就會這麼寫啦~~~~~~ 對於一個有很多屬性的類,在為屬性賦值時,通常會用到兩種方式,建構函式或者set方法。

  • 使用建構函式的時候,如果引數非常多,我們建立物件的時候就會比較痛苦,因為一長串的引數,我們如果想知道哪些值什麼意思,就需要一個一個數著引數來探個究竟。對於多個引數型別一樣的建構函式,建立物件簡直就是噩夢。顛倒了其中兩個引數的順序,編譯器也不會報錯,在執行時出現錯誤也很難排查。
  • 使用set方法設定必要的引數,是比較常見的一種寫法。可讀性也比較高。但是文中說,“javaBean模式(也就是set方法)自身有著很嚴重的缺點,因為構造過程被分到了幾個呼叫中,在構造過程中JavaBean可能處於不一致的狀態”,這一點可能我們都很少想到。

duangduangduang。。。。。。Builder模式可以彌補以上不足。

讓bean每個屬性的set方法都返回一個物件本身的引用。程式碼如下:

public class User {
    private String name;
    private int age;
    private String sex;

    public User setName(String name) {
        this.name = name;
        return this;
    }

    public User setAge(int age) {
        this.age = age;
        return this;
    }

    public User setSex(String sex) {
        this.sex = sex;
        return this;
    }
}

給User物件賦值就變成了:

 User user = new User().setAge(10).setName("張").setSex("男");

是不是很簡潔。。。。。

IDEA也支援這種寫法呢,很簡單,只需要在建立setter的時候,把預設Template換成builder即可。