1. 정의
- 객체 생성 과정를 캡슐화한다.
2. 예시
- 휴가 계획 일정표를 만든다.
3. 그림
4. 클래스 다이어그램
5. 코드
public class Client {
public static void main(String[] args){
AbstractBuilder vacation = new VacationBuilder()
.builder()
.addHotel("j hotel")
.addAirPlane("e air")
.addTicket("j ticket")
.addEvent("u event")
.build();
System.out.println(vacation.hotel);
System.out.println(vacation.airPlane);
System.out.println(vacation.ticket);
System.out.println(vacation.event);
}
}
public abstract class AbstractBuilder {
protected String hotel, airPlane, ticket, event;
protected abstract AbstractBuilder builder();
protected abstract AbstractBuilder build();
protected abstract AbstractBuilder addHotel(String hotel);
protected abstract AbstractBuilder addAirPlane(String airPlane);
protected abstract AbstractBuilder addTicket(String ticket);
protected abstract AbstractBuilder addEvent(String event);
}
public class VacationBuilder extends AbstractBuilder{
@Override
protected AbstractBuilder builder() {
return new VacationBuilder();
}
@Override
protected AbstractBuilder build() {
return this;
}
@Override
protected AbstractBuilder addHotel(String hotel) {
this.hotel = hotel;
return this;
}
@Override
protected AbstractBuilder addAirPlane(String airPlane) {
this.airPlane = airPlane;
return this;
}
@Override
protected AbstractBuilder addTicket(String ticket) {
this.ticket = ticket;
return this;
}
@Override
protected AbstractBuilder addEvent(String event) {
this.event = event;
return this;
}
}
https://github.com/kang-seongbeom/design_pattern
💡 Github에서 디자인 패턴 코드를 볼 수 있습니다.
6. 설명
- 객체 생성 일련의 과정을 AbstractBuilder로 추상화한다.
- 내부 구조를 Client로 부터 보호할 수 있다.
'디자인 패턴' 카테고리의 다른 글
디자인 패턴 - 중재자 패턴(Mediator Pattern) (0) | 2022.11.18 |
---|---|
디자인 패턴 - 플라이웨이트 패턴(Flyweight Pattern) (0) | 2022.11.18 |
디자인 패턴 - 브릿지 패턴(Bridge Pattern) (0) | 2022.11.18 |
디자인 패턴 - (원격)프록시 패턴 (Proxy Pattern) (0) | 2022.11.18 |
디자인 패턴 - 상태 패턴(State Pattern) (0) | 2022.11.18 |