設計模式(創建型)—— 建造者模式
這是一個學生類,它有四個屬性,通過構造方法創建它的對象,我們需要填入四個參數,這就導致創建對象的代碼有點長(如果他有更多屬性時,那會更加恐怖),這看起來不太優雅
public class Student {public int id;public int age;public int grade;public String name;public Student(int id, int age, int grade, String name) {this.id = id;this.age = age;this.grade = grade;this.name = name;}
}
在之前,我們學習過通過StringBuilder來創建一個字符串,它就像一個建造者,可以這個字符串對象中不斷添加、刪除、修改,最終得到一個字符串對象,參考這種方法,我們是不是也可以設計一個創建學生對象的建造者(學生類的內部類)
public static class StudentBuilder {int id;int age;int grade;String name;public StudentBuilder id(int id) {this.id = id;return this;}public StudentBuilder age(int age) {this.age = age;return this;}public StudentBuilder grade(int grade) {this.grade = grade;return this;}public StudentBuilder name(String name) {this.name = name;return this;}public Student build() {return new Student(id, age, grade, name);}}
通過一個靜態方法,來獲取建造者對象
//獲取建造者
public static StudentBuilder builder() {return new StudentBuilder();
}
這樣一來,我們就可以通過這樣一種方式得到一個對象
Student student = Student.builder().id(1).age(16).grade(9).name("張三").build();
System.out.println(student);
這看起來優雅多了,當然如果這個類只有兩三個簡單的屬性,我們依然可以采用最原始的構造方法來創建,建造者模式的優雅在屬性特別多時才能很好的體現