불변 객체(Immutable objet)란
- 객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체
불변 객체의 장점
- 이해하기 쉽고 안정적인 서비스 개발에 도움이 된다.
- map, set, cache에 쓰기 적절하다
- (일반적으로)thread-safe 하다.
Java의 불변 객체
- String
String은 불변 객체이므로 "구독마렵네"를 내용으로 하는 새로운 String 인스턴스를 easyCode가 가리킨다.
클래스를 immutable하게 만드는 법
- 상태 변경 메서드 제거 ) setter
- 모든 필드 private final 지정
- 클래스 상속 금지
- mutable 객체의 레퍼런스 공유 금지