별도의 Builder 클래스를 만들어 값을 입력받은 후 하나의 인스턴스를 리턴하는 방식
매개 변수를 각각 받아들이고 모든 매개 변수를 받은 뒤에 이 변수들을 통합해서 한번에 사용하는 패턴
public class Member {
private final int id;
private final String password;
private final String name;
private final int age;
private final String email;
private final String phone;
public static class Builder {
// Required parameters(필수 인자)
private final int id;
// Optional parameters - initialized to default values(선택적 인자는 기본값으로 초기화)
private String password = "";
private String name = "";
private int age = 0;
private String email = "";
private String phone = "";
public Builder(int id) {
this.id = id;
}
public Builder password(String password) {
password = password;
return this; // 이렇게 하면 . 으로 체인을 이어갈 수 있다.
}
public Builder name(String name) {
name = name;
return this;
}
public Builder age(int age) {
age = age;
return this;
}
public Builder email(String email) {
email = email;
return this;
}
public Builder phone(String phone) {
phone = phone;
return this;
}
public Member build() {
return new Member(this);
}
}
private Member(Builder builder) {
id = builder.id;
password = builder.password;
name = builder.name;
age = builder.age;
email = builder.email;
phone = builder.phone;
}
}
Member member = new Member.Builder(1)
.name("name")
.age(27)
.build();
@Getter
@Builder
public class Member {
private final int id;
private final String password;
private final String name;
private final int age;
private final String email;
private final String phone;
...
@Builder
를 사용하는 것만으로 패턴구현이 가능하다...! 빌더 패턴에 관련하여 GoF 디자인 패턴의 빌더 패턴과 Effective Java의 빌더 패턴과의 개념 충돌로 여러 가지 의견들이 나오는 것을 볼 수 있다.
업무에서는 좀 더 Effective Java에서 설명하는 개념에 근거하여 사용을 했지만 다른 개념도 있다하니 이는 차후에 각자 공부하여 내용을 추가하는 걸로,,
참조: