Builder 패턴

방세현·2023년 4월 22일
0

디자인패턴

목록 보기
7/9
post-thumbnail

Builder 패턴

Builder 패턴은 인스턴스들을 조립하는 역활을 하는 패턴입니다.

  • Builder 클래스는 인스턴스를 생성하기 위한 메서드를 선언합니다.

  • Director는 Builder의 매서드를 사용하여 인스턴스를 생성합니다.

  • ConcreateBuilder는 Builder의 메서드를 구현합니다

Director

public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public void construct() {
        builder.makeTitle("Greeting");
        builder.makeString("일반적인 인사");
        builder.makeItems(new String[]{"How are you?", "Hello.", "Hi"});
        builder.makeString("시간대별 인사");
        builder.makeItems(new String[]{"Good morning", "Good afternoon.", "Good evening"});
        builder.close();
    }
}
Builder

public class TextBuilder extends Builder {

	private StringBuffer sb = new StringBuffer();
    
    @Override
    public void makeTitle(String title) {
        
    }

    @Override
    public void makeString(String str) {

    }

    @Override
    public void makeItems(String[] items) {

    }

    @Override
    public void close() {

    }
    
    public String getTextResult(){
        return sb.toString();
    }
}
Client

TextBuilder textBuilder = new TextBuilder();
        Director director = new Director(textBuilder);
        director.construct();
        System.out.println(textBuilder.getTextResult());

TemplateMethod 패턴과 메서드를 조합해서 어떤 결과를 나타내준다는 점은 똑같아보였지만 TemplateMethod는 abstract클래스에 abstract메서드와 이를 조합한 TemplateMethod가 있지만 Builder패턴은 Director가 Builder클래스를 의존성 주입하여 Builder의 메서드를 Director에서 조합한다는 것이 달랐다.

  • 의존성 주입
    의존성 주입은 생성자를 통해 객체와 객체를 이어주는 방법이다.

    위의 코드에서 Director 객체가 Builder 객체를 의존성 주입을 통해 construct()에서 사용하고 있다.

0개의 댓글