- 인스턴스를 직접 생성하지 않고, 내부 클래스를 통해 간접적으로 생성하게 하는 패턴
class Something {
private Something(String name, int size) {
// 초기화
}
public static class Builder {
String name = null;
int size = 0;
public Builder() {
// 초기화
}
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setSize(int size) {
this.size = size;
return this;
}
public Something build() {
return new Something(name, size);
}
}
}
// 예시 소스
public void createSomething() {
Something something = new Something.Builder().setName("hj").setSize(1).build();
}
- 빌더 패턴은 보통 클래스와 사용 대상 객체의 결합도를 낮추기 위해 많이 쓴다
- 예로 들어 Something 안에 name, size말고도 다른 value 인수를 추가해야 한다고 생각해보자
- 보통은 Something 안에 value 넣고 사용하는 모든 곳을 찾아 추가를 해야 하는데..
- 빌더를 쓰면 내부 Builder 안에서만 추가해주면 된다
- 보통 빌더나 팩토리가 유사한 점이 많아 팩토리로 퉁치기도 한다고 함, 자바 외 언어에선