Effective JAVA

2. 생성자에 매개변수가 많다면 빌더를 고려하라

상국이 2021. 8. 22. 17:56
728x90

점층적 생성자 패턴 

단점

매개변수가 많아지면 코드를 작성하거나 읽기 힘들다.

 - 매개변수의 개수, 의미를 주의해서 확인해야 한다.. 

 - 타입이 같은 매개변수가 연달아 늘어 있으면 찾기 어려운 버그로 이어질 수 있다.

   -> 실수로 매개변수의 순서를 바꿔 전달해도 컴파일러단에서 확인할 수 없다.

 

JavaBeans 패턴

* 점층적 패턴의 단점을 보완하기 위해 등장

 

단점

 - 객체를 하나 만들기 위해 메서드를 여러개 호출해야 한다.

 - 객체가 완전히 생성되기 전까지 일관성(consistency)이 무너진 상태에 놓이게 된다.

 - 스레드 안전성을 얻기 위해 프로그래머가 추가 작업을 해줘야 한다.

 

 

Builder 패턴

* 매개변수 중 다수가 필수가 아니거나 같은 타입이면 점층적 생성자보다 코드를 읽고 쓰기가 훨씬 간결하고, JavaBeans보다 안전하다.

 

장점

 - 계층적으로 설계된 클래스와 함께 쓰기에 좋다.

 - 생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 가독성이 좋다.

 

단점

 - 객체를 만들기 위해 빌더부터 만들어야 한다.

    -> 빌더 생성 비용이 크진 않지만 성능에 민감한 상황에서는 문제가 될 수 있다.

 - 점층적 생성자 패턴 보다는 코드가 장황하다.

 

 

* 이 글은 Effective java를 공부하면서 작성하였습니다.

728x90