에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다
1. 빌더 패턴
- 제품의 생산 단계를 캡슐화하여 여러 단계로 나눠서 만들도록 하는 패턴
- 클라이언트는 추상 인터페이스로 제품을 단계적으로 생산
장점
- 유연한 디자인이 필요할 경우
- 여러 조합이 발생할 수 있음
- 생성자가 너무 많아짐
- 명확하게 객체를 생성할 수 있음
- 제품의 내부 구조를 클라이언트로부터 보호할 수 있음
2. Vacation
VacationBuilder
public class Vacation {
private String date;
private String destination;
private String accommodation;
private List<String> activities;
// Private constructor
private Vacation(VacationBuilder builder) {
this.date = builder.date;
this.destination = builder.destination;
this.accommodation = builder.accommodation;
this.activities = builder.activities;
}
// Getters (Optional)
public String getDate() { return date; }
public String getDestination() { return destination; }
public String getAccommodation() { return accommodation; }
public List<String> getActivities() { return activities; }
@Override
public String toString() {
return "Vacation{" +
"date='" + date + '\'' +
", destination='" + destination + '\'' +
", accommodation='" + accommodation + '\'' +
", activities=" + activities +
'}';
}
// Static nested Builder class
public static class VacationBuilder {
private String date;
private String destination;
private String accommodation;
private List<String> activities = new ArrayList<>();
public VacationBuilder(String date, String destination) { // 필수 항목
this.date = date;
this.destination = destination;
}
public VacationBuilder setAccommodation(String accommodation) {
this.accommodation = accommodation;
return this;
}
public VacationBuilder addActivity(String activity) {
this.activities.add(activity);
return this;
}
public Vacation build() {
return new Vacation(this);
}
}
}
'Java > Design Pattern' 카테고리의 다른 글
[헤드퍼스트 디자인 패턴] 12-4. 플라이웨이트 패턴 (0) | 2024.12.19 |
---|---|
[헤드퍼스트 디자인 패턴] 12-3. 책임 연쇄 패턴 (0) | 2024.12.19 |
[헤드퍼스트 디자인 패턴] 12-1. 브리지 패턴 (0) | 2024.12.18 |
[헤드퍼스트 디자인 패턴] 11. 프록시 패턴 (0) | 2024.12.18 |
[헤드퍼스트 디자인 패턴] 10. 상태 패턴 (0) | 2024.12.18 |