徹底理解android 建造者模式
阿新 • • 發佈:2019-01-09
Android設計模式之建造者模式(builder pattern)
使用builder設計模式完美的優點:具有必填屬性和可選屬性的區分,更重要的是 可讀性很強。
public Student getStudent(){ return new Student.StudentBuilder(1,"小明")//必填屬性在構造方法中賦值 .setAge(1)//設定可選屬性 年齡 .setGender(1)//設定可選屬性 性別 預設1為男 .build();//物件構建完畢的標識,返回Student物件 }
值得注意的幾點:
1.Student的構造方法是私有的,也就是說我們不能直接new出Student物件
2.我們又將Student的屬性用final修飾了,並且我們在構造方法中都為他們進行了初始化操作,我們只提供了getter方法
3.StudentBuilder的屬性中只給我們必須的屬性新增的final修飾,所以我們必須在StudentBuilder的構造方法中為他們初始化
builder模式另一個重要特性是:它可以對引數進行合法性驗證,如果我們傳入的引數無效,我們可以丟擲一個IllegalStateException異常,但是我們在哪裡進行引數合法性驗證也是有講究的:那就是在物件建立之後進行合法性驗證。我們修改StudentBuilder的build()方法
public Student build(){
Student student = new Student(this);
if (student.getAge()>120){
throw new IllegalStateException("年齡超出限制");
}
return student;
}