디자인 패턴
디자인 패턴 - 빌더 패턴(Builder Pattern)
ksb-dev
2022. 11. 18. 16:10
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로 부터 보호할 수 있다.