객체를 생성하기 위해 생성자 패턴, 정적 메소드 패턴, 수정자 패턴, 빌더 패턴을 사용 할 수 있다. 이중에서 빌더패턴에 대해 알아본다.
빌더 패턴이란
- 생성과 관련된 디자인 패턴으로, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법
- 빌더 패턴은 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공한다.
- 생성해야하는 객체가 Optional한 속성을 많이 가질 때 더 좋다.
ASis - Tobe
Asis
- 클라이언트 프로그램에서 팩토리 클래스를 호출할 때 Optional한 인자가 많아지면, 타입과 순서에 대한 관리가 어려워져 에러 발생 확률이 높아진다.
- 경우에 따라 필요 없는 파라미터들에 대해서 팩토리 클래스에 일일이 NULL 값을 넘겨줘야한다.
- 생성해야 하는 sub class가 무거워지고 복잡해짐에 따라 팩토리 클래스 또한 복잡해진다.
Tobe
- 불필요한 생성자를 만들지 않고 객체를 만든다.
- 데이터의 순서에 상관 없이 객체를 만들어 낸다.
- 사용자가 봤을때 명시적이고 이해할 수 있어야 한다.
- 위와 같이 객체를 생성할 때, 생성자만 사용할 때 발생할 수 있는 문제를 개선하기 위해 빌더 패턴이 고안됨
- 빌더 패턴은 별도의 Builder 클래스를 만들어 필수 값에 대해서는 생성자를 통해, 선택적인 값들에 대해서는 메소드를 통해 값을 입력받은 후에 build() 메소드를 통해 최종적으로 하나의 인스턴스를 return 하는 방식이다.
빌더 패턴의 장점
빌더 패턴 사용법
User user = User.builder()
.name("sujeong")
.age(25)
.hobby("running").build();
참고