애플사이다의 iOS 개발 일지

[디자인 패턴] Builder - 초기화 과정이 복잡할 때 본문

프로그래밍 철학

[디자인 패턴] Builder - 초기화 과정이 복잡할 때

Applecider 2023. 2. 20. 19:45

문제 상황

  • 여러 개의 프로퍼티, 중첩 타입 등을 지정해야 하므로 초기화 과정이 복잡한 객체가 존재한다.
  • 이때 모든 가능한 매개변수를 포함하는 거대한 생성자를 만들게 되는데, 가독성이 떨어지고, 사용하지 않는 매개변수가 존재하므로 비효율적이라는 문제가 있다.

패턴 설명

  • 복잡한 객체를 단계별로 생성하는 패턴이다.
  • 객체를 생성하는 과정에서 해당 객체에 접근 불가하도록 막는다.
  • Builder를 통해 객체를 초기화하고, 외부에서 프로퍼티값을 메서드 주입받아 객체를 완성한다.
  • Director를 선택적으로 활용할 수 있다. Build 관련 메서드들의 실행 순서를 정의하는 역할을 담당한다.
    객체를 종류별로 구분하여 생성 과정을 분기처리하고자 할 때 활용하면 좋다.

장점

  • 복잡한 객체를 단계적으로 생성하거나, 생성 단계를 연기할 수 있다.
  • 다양한 종류의 객체를 생성할 때 코드 재사용성이 좋다.
  • 단일 책임 원칙을 준수한다.

단점

  • Builder 타입 등 클래스/구조체를 추가해야 하므로 코드의 복잡도가 증가한다.

예시 

Comments