다양한 매개변수를 입력받아 인스턴스를 생성하고 싶을 때 사용하던 생성자 오버로딩 방식
단점은?
**‘매개변수가 없는 생성자로 객체 생성 → 세터(setter) 메서드들을 호출’**해 원하는 매개변수의 값을 설정하는 방식
장점
단점
별도의 빌더 클래스를 만들어 메서드를 통해 값을 입력받은 후 최종적으로 build() 메서드로 하나의 인스턴스를 생성하여 리턴하는 패턴
구현 방법
Builder 클래스 만들기
class StudentBuilder {
private int id;
private String name;
private String grade;
private String phoneNumber;
}
각 멤버에 대한 Setter메서드를 구현해주기
class StudentBuilder {
private int id;
private String name;
private String grade;
private String phoneNumber;
public StudentBuilder id(int id) {
this.id = id;
return this;
}
public StudentBuilder name(String name) {
this.name = name;
return this;
}
public StudentBuilder grade(String grade) {
this.grade = grade;
return this;
}
public StudentBuilder phoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this; // StudentBuilder 객체 자신을 말함.
// 자신을 리턴함으로써 메서드 호출 후 연속적으로 빌더 메서드들을 체이닝하여 호출할 수 있게 됨
// new StudentBuilder().id(값).name(값)
}
}
사용하기
public static void main(String[] args) {
Student student = new StudentBuilder()
.id(2016120091)
.name("임꺽정")
.grade("Senior")
.phoneNumber("010-5555-5555")
.build();
}