程式碼優化----使用builder模式構造物件
阿新 • • 發佈:2018-12-11
看《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即可。