Builder 패턴

jiyoon·2023년 5월 21일
0

모바일 안드로이드

목록 보기
11/12

Builder 패턴은 객체 생성과정과 표현 방법을 분리하여 동일한 생성 과정에서 서로 다른 표현 결과를 만들 수 있는 디자인 패턴입니다. 주로 복잡한 객체를 생성할 때 사용됩니다.
Java에서의 Builder 패턴은 특히 복잡한 생성자 인수가 많을 때, 또는 대부분의 인수가 선택적일 때 사용되는데, 이를 통해 가독성과 코드의 유지 관리를 향상시킬 수 있습니다.

public class SomeClass {
    private final int requiredParam;
    private final int optionalParam1;
    private final int optionalParam2;

    public static class Builder {
        // 필수 매개변수
        private final int requiredParam;

        // 선택적 매개변수 - 기본값으로 초기화
        private int optionalParam1 = 0;
        private int optionalParam2 = 0;

        public Builder(int requiredParam) {
            this.requiredParam = requiredParam;
        }

        public Builder optionalParam1(int value) {
            optionalParam1 = value;
            return this;
        }

        public Builder optionalParam2(int value) {
            optionalParam2 = value;
            return this;
        }

        public SomeClass build() {
            return new SomeClass(this);
        }
    }

    private SomeClass(Builder builder) {
        requiredParam = builder.requiredParam;
        optionalParam1 = builder.optionalParam1;
        optionalParam2 = builder.optionalParam2;
    }
}

이렇게 구성된 Builder 패턴은 다음과 같이 사용할 수 있습니다.

SomeClass someClass = new SomeClass.Builder(123)
    .optionalParam1(456)
    .optionalParam2(789)
    .build();
  1. 먼저 SomeClass 라는 클래스가 있습니다. 이 클래스는 몇 개의 필드를 가지고 있는데, 일부는 필수적이고, 일부는 선택적입니다.

  2. 그리고 이 클래스 안에 Builder 라는 정적 내부 클래스가 정의되어 있습니다. 이 Builder 클래스는 SomeClass의 필드와 똑같은 필드를 가지고 있으며, 필수 필드는 생성자에서 초기화하고, 선택적 필드는 메서드를 통해 초기화할 수 있습니다.

  3. 마지막으로, Builder 클래스는 build() 메서드를 가지고 있습니다. 이 메서드는 Builder 객체 자신의 필드를 이용해 SomeClass 객체를 생성합니다.

  4. 이렇게 만들어진 Builder 클래스를 이용하면, 필수적인 필드는 무조건 초기화하게 되어 안전성을 보장하면서, 선택적인 필드는 필요에 따라 초기화할 수 있게 됩니다. 또한, 어떤 필드가 어떤 값을 가지는지 명확히 알 수 있어서 코드의 가독성이 좋아집니다.

profile
주니어 개발자

0개의 댓글