본문 바로가기

디자인 패턴

디자인 패턴 - 빌더 패턴(Builder Pattern)

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로 부터 보호할 수 있다.