issues
search
ShimSeongbo
/
study
0
stars
0
forks
source link
[Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라.
#1
Open
ShimSeongbo
opened
1 year ago
ShimSeongbo
commented
1 year ago
아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라.
핵심 정리
정적 팩터리와 생성자에 선택적 매개변수가 많을 때 고려할 수 있는 방안 (필수적 필드는 생성자 주입이 좋다.)
대안1
: 점층적 생성자 패턴 또는 생성자 체이닝
매개변수가 늘어나면 클라이언트 코드를 작성하거나 읽기 어렵다.
대안2
: 자바빈즈 패턴
완전한 객체를 만들려면 메서드를 여러번 호출해야 한다. (일관성이 무너진 상태가 될 수도 있다.)
어디까지 세팅을 해야 사용 가능한 상태인지 알기가 힘들다.
클래스를 불변으로 만들 수 없다.
권장하는 방법
: 빌더 패턴
플루언트 API 또는 메소드 체이닝을 한다.
계층적으로 설계된 클래스와 함께 사용하기 좋다.
점층적 생성자보다 클라이언트 코드를 읽고 쓰기가 훨씬 간결하고, 자바빈즈 보다 훨씬 안전하다.
완전 공략
완전 공략 6. 자바빈(JavaBean)이란?
(주로 GUI에서) 재사용 가능한 소프트웨어 컴포넌트
java.beans
패키지 안에 있는 모든 것
그 중에서도 자바빈이 지켜야 할 규약
아규먼트 없는 기본 생성자
getter와 setter 메소드 이름 규약
Serializable
인터페이스 구현
완전 공략 7. 객체 얼리기 (Freezing)
임의의 객체를 불변 객체로 만들어주는 기능.
Object.freeze()
에 전달한 객체는 그 뒤로 변경될 수 없다,
새 프로퍼티를 추가하지 못함.
기존 프로퍼티 값을 변경하지 못함.
프로토타입을 변경하지 못함.
완전 공략 8. 빌더 패턴 (디자인 패턴)
디자인 패턴은 모양이 아니라 목적이 가장 중요하다.
BuilderPattern의 Director은 Builder를 통해 만드는 객체 중에 자주 만들어지는 객체를 만들게끔 하는 구현체이다.
완전 공략 9. IllegalArgumentException
잘못된 인자를 넘겨 받았을 때 사용할 수 있는 기본 런타임 예외
잘못된 인자를 출력
아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라.
핵심 정리
완전 공략
완전 공략 6. 자바빈(JavaBean)이란?
java.beans
패키지 안에 있는 모든 것Serializable
인터페이스 구현완전 공략 7. 객체 얼리기 (Freezing)
Object.freeze()
에 전달한 객체는 그 뒤로 변경될 수 없다,완전 공략 8. 빌더 패턴 (디자인 패턴)
완전 공략 9. IllegalArgumentException