Builder Pattern

Ik·2023년 2월 26일
0

CS

목록 보기
10/27

Builder Pattern이란?

  • parameter가 많은 객체 생성에 효율적
    • 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴

    • 특정 parameter는 초기화, 일부는 초기화하지 않는 경우도 한 예

    • 유연성 탑재 가능

  • 가독성 높일 수 있다

  • 객체 생성 후 setmethod 이용하는 구조 X

  • 생성자 오버로딩이라 할 수 있다
    • 상위 or 같은 클래스의 같은 이름의 메서드 여러 개 정의
      • 메서드 이름이 같아야 하고 매개변수의 개수 또는 타입이 달라야한다 (반환 타입은 관계 X)
객체.Builder   // 데이터 선별해서 멤버변수 초기화 가능하게 해주는 객체(@Builder를 이용해 객체 생성)
// 반환 타입은 객체Builder
// 직접 호출해 사용 불가해 객체.builder() 형태로 부름
Customer c2 = Customer.builder().id("id01").build(); // 이처럼 기본 생성자와는 다르게 특정 변수 값을 파악할 수 있다
// Customer type의 c2 객체의 id parameter "id01"로 초기화
// 이 경우 반환 타입은 build()






생성 배경

  • 기존의 객체 생성 방법의 단점 보완 목적
  • 생성과 관련된 디자인 패턴, 다양한 구성의 인스턴스를 만드는데 목적 존재





기존의 객체 생성 방법 및 비교

  1. 생성자 패턴
    • 우리가 사용하고자 하는 일부 parameter들 외에 모든 parameter들 관리 필요
    • ex) 사용하지 않는 parameter들 null로 채워야 되는 등

  2. Java Bean 패턴(setter)
    • 일부 parameter들만 사용할 수 있지만 parameter를 기입할 때마다 함수를 호출해야되기에 번거로우며 가독성이 떨어진다

    • setter 함수로 값 변경 가능하기에 쓰레드간 공유 가능한 객체 일관성(consistency) 깨질 가능성 존재, 자세하게 객체 값을 setter 했을 때 해당 객체를 사용하는 여러 다른 작업 공간(Class)들이 모두 다 set한 데이터를 실시간으로 수정해 받을 수 없을 가능성 존재한다는 것
      Thread : 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 일반적인 경우 한 프로그램은 하나의 스레드를 가지고 있지만 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다


      결론적으로는 여러 parameter들 중 목적에 맞는 일부 parameter들 만을 이용해 인스턴스를 만들고자 builder를 사용하게 되었다






ref

0개의 댓글