
구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생상하는 인터페이스를 제공합니다. 구상 클래스는 서브클래스에서 만듭니다.
복잡한 객체들을 단계별로 생성할 수 있도록 하는 디자인 패턴입니다.
필더 패턴을 적용하면 다음과 같은 장점을 가질 수 있습니다.
// 구현 클래스
public class User {
private String name;
private Integer age;
private Integer height;
private Integer iq;
public User(String name, Integer age, Integer height, Integer iq) {
this.name = name;
this.age = age;
this.height = height;
this.iq = iq;
}
public UserBuilder builder() {
return new UserBuilder();
}
}
// 빌더 클래스
public class UserBuilder {
private String name;
private Integer age;
private Integer height;
private Integer iq;
public UserBuilder name(String name) {
this.name = name;
return this;
}
public UserBuilder age(Integer age) {
this.age = age;
return this;
}
public UserBuilder age(Integer height) {
this.height = height;
return this;
}
public UserBuilder age(Integer age) {
this.age = age;
return this;
}
public User build() {
return new User(name, age, height, iq);
}
}
위 코드는 User 클래스와 이를 활용한 UserBuilder 클래스를 정의했습니다.
위를 활용하게 되면 위에서 언급한 장점을 얻을 수 있습니다.