Builder Pattern이란?
- parameter가 많은 객체 생성에 효율적
- 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
- 특정 parameter는 초기화, 일부는 초기화하지 않는 경우도 한 예
- 유연성 탑재 가능
- 가독성 높일 수 있다
- 객체 생성 후 setmethod 이용하는 구조 X
- 생성자 오버로딩이라 할 수 있다
- 상위 or 같은 클래스의 같은 이름의 메서드 여러 개 정의
- 메서드 이름이 같아야 하고 매개변수의 개수 또는 타입이 달라야한다 (반환 타입은 관계 X)
객체.Builder
Customer c2 = Customer.builder().id("id01").build();
생성 배경
- 기존의 객체 생성 방법의 단점 보완 목적
- 생성과 관련된 디자인 패턴, 다양한 구성의 인스턴스를 만드는데 목적 존재
기존의 객체 생성 방법 및 비교
- 생성자 패턴
- 우리가 사용하고자 하는 일부 parameter들 외에 모든 parameter들 관리 필요
- ex) 사용하지 않는 parameter들 null로 채워야 되는 등
- Java Bean 패턴(setter)
- 일부 parameter들만 사용할 수 있지만 parameter를 기입할 때마다 함수를 호출해야되기에 번거로우며 가독성이 떨어진다
- setter 함수로 값 변경 가능하기에 쓰레드간 공유 가능한 객체 일관성(consistency) 깨질 가능성 존재, 자세하게 객체 값을 setter 했을 때 해당 객체를 사용하는 여러 다른 작업 공간(Class)들이 모두 다 set한 데이터를 실시간으로 수정해 받을 수 없을 가능성 존재한다는 것
Thread : 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 일반적인 경우 한 프로그램은 하나의 스레드를 가지고 있지만 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다
결론적으로는 여러 parameter들 중 목적에 맞는 일부 parameter들 만을 이용해 인스턴스를 만들고자 builder를 사용하게 되었다
ref