Builder 패턴
객체의 생성을 보다 단계적으로 할수 있도록 한다.
인자 순서를 파악할 필요가 없으니, 잘못된 값을 넣는 실수를 줄일 수 있다.
예시
class Student {
int? _id;
String? _name;
String? _grade;
int? _age;
Student(int? id, String? name, String? grade, int? age) {
_id = id;
_name = name;
_grade = grade;
_age = age;
}
}
// builder
class StudentBuilder {
int? _id;
String? _name;
String? _grade;
int? _age;
StudentBuilder id(int id) {
_id = id;
return this;
}
StudentBuilder name(String name) {
_name = name;
return this;
}
StudentBuilder grade(String grade) {
_grade = grade;
return this;
}
StudentBuilder age(int age) {
_age = age;
return this;
}
Student build() {
return Student(_id, _name, _grade, _age);
}
}
각각의 set method는 this를 반환함으로 Chaining하게 호출할 수 있도록 한다
아래와 같이 builder 객체 실행
void main() {
Student student =
StudentBuilder().id(1).name("아무개").grade("junior").age(20).build();
}