CH7-5 · MODEL

불변 객체 설계: 먼저 구분할 경계

불변 객체는 생성 이후 관찰 가능한 상태가 바뀌지 않습니다.

핵심 경계

생성자에서 모든 상태를 확정한다

필수 값을 검증해 final 필드에 저장하고 상태를 바꾸는 setter를 제공하지 않습니다.

핵심 경계

가변 입력은 방어적으로 복사한다

호출자가 가진 List나 배열 참조를 그대로 저장하면 생성 뒤 외부 변경이 내부 상태를 바꿀 수 있습니다.

핵심 경계

가변 내부값을 그대로 반환하지 않는다

getter가 내부 배열을 반환하면 외부가 내용을 수정할 수 있습니다.

핵심 경계 필수 값을 검증해 final 필드에 저장하고 상태를 바꾸는 setter를 제공하지 않습니다.