Builder Pattern

정지원·2022년 1월 23일
0

https://www.youtube.com/watch?v=OwkXMxCqWHM 백기선님의 이팩티브 자바를 보고 정리한 내용입니다.

생성자 매개변수가 많을때

생성자 매개변수가 많을때에 생성자로 필드를 모두 초기화 하려면 작성하기도 어렵고 가독성도 떨어진다.
[IDE의 도움을 받지 않는 이상, 객체를 생성할때 , 매개변수가 무엇을 뜻하는지 알기 어렵다]

해결책1 : 매개변수를 받지 않는 생성자를 사용해 인스턴스를 만들고, 세터를 사용해서 필요한 필드만 설정

장점 : 필드 값 주입시, 무엇을 뜻하는지 이해하기 쉽다
단점 : 여러번의 호출 (set method)을 거쳐야 하기 때문에 자바빈이 중간에 사용되는 경우 ,안정적이지 않은 상태로 사용될 여지가 있다. -> set 호출 끝나지 않은상태에서 로직실행 될수도 있다.
더하여, 불변클래스로 만들지 못하고 멀티쓰레드 환경에서 안정성을 위해 추가적인 수고가 필요하다.

해결책2 : 빌더

생성자의 안정성과 자바빈을 사용할때 얻을 수 있었던 가독성을 모두 취할 수 있는 대안이 바로 빌더패턴이다.

단점 : 객체를 만들기 전에 빌더를 먼저 만들어야한다. 성능에 민감한 상황에서는 그점이 문제가 될 수 있다.
더하여, 생성자를 사용하는것보다 코드가 더 장황하다.

https://github.com/JIWEON-JEONG/Study/tree/master/builder

빌더 패턴을 활용한 예제를 만들어 보았다.

추가로 Lombok 의 @Builder 라는 어노테이션을 사용하면 빌더 패턴을 쉽게 사용할 수 있다.

결과적으로 생성자의 매개변수가 많을때, 빌더패턴을 고려해보자 !

profile
지속적인 발전, 태도

0개의 댓글