책/Effective Java 3

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

초코푸딩 2020. 11. 6. 08:57

[점층적생성자패턴]

장점 : 매개변수가 유효한지를 생성자에서만 확인하면되서 일관성을 유지하기 쉽다.

단점 : 매개변수의 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다.

 

[자바빈즈패턴]

선택 매개변수가 많을 때 자바빈즈패턴을 활용할 수 있다.

매개변수가 없는 생성자로 객체를 만든 후, 세터 메서드를 호출원하는 매개변수의 값을 설정하는 방식이다.

 

장점 : 코드가 길어지긴 했지만 인스턴스를 만들기 쉽고, 그 결과 더 읽기 쉬운 코드가 된다.

단점 : 객체 하나를 만들려면 메서드를 여러개 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓인다.

 

[빌더패턴]

점층적 생성자 패턴과 자바빈즈 패턴의 장점만 취했다.

 

단점 : 객체를만드려면 그에앞서 빌더부터 만들어야 하는데, 빌더 생성 비용이 크지는 않지만 성능에 민감한 상황에서는 문제가 될 수도 있다.

 

[정리]

API를 만들때, 매개변수가 많아질 상황을 고려해서 (최소 4개 이상) 빌더패턴을 선택하는 것이 낫다.

매개변수 중 다수가 필수가 아니거나 같은 타입일 경우 더 좋다.

빌더는 점층적 생성자보다 클라이언트 코드를 읽고 쓰기가 훨씬 간결하고, 자바빈즈보다 훨씬 안전하다.