빌더 패턴 (Builder)
빌더 패턴(Builder Pattern)은 객체를 생성할 때 생성자에 수많은 인자를 순서대로 넘겨야 하는 번거로움과 실수(가독성 저하)를 막기 위해 고안되었습니다.
햄버거를 주문할 때 "빵, 패티, 치즈, 양상추, 토마토" 순서를 외워서 생성자를 부르는 대신, .addPatty().addCheese() 처럼 메서드 체이닝(Chaining)을 통해 직관적으로 옵션을 조립한 뒤 마지막에 build()를 호출하여 최종 객체를 완성합니다.
class Hamburger {
private String bun;
private String patty;
private boolean hasCheese;
// private 생성자
private Hamburger(Builder builder) {
this.bun = builder.bun;
this.patty = builder.patty;
this.hasCheese = builder.hasCheese;
}
public void showMenu() {
System.out.println(bun + " 번, " + patty + " 패티, 치즈: " + hasCheese);
}
public static class Builder {
private String bun = "참깨"; // 기본값
private String patty;
private boolean hasCheese = false;
public Builder(String patty) {
this.patty = patty; // 필수 항목
}
public Builder bun(String bun) {
this.bun = bun;
return this;
}
public Builder addCheese() {
this.hasCheese = true;
return this;
}
public Hamburger build() {
return new Hamburger(this);
}
}
}
public class Main {
public static void main(String[] args) {
Hamburger burger = new Hamburger.Builder("소고기")
.bun("브리오슈")
.addCheese()
.build();
burger.showMenu();
}
}