1. 程式人生 > >徹底理解android 建造者模式

徹底理解android 建造者模式

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;
        }