불변객체란?
생성 후 그 상태를 바꿀 수 없는 객체. 단순히 final로 선언하여 주소값을 바꿀 수 없는 객체가 아닌 외부에 의해 내부 데이터를 변경할 수 없는 객체를 말한다.
장점
- 멀티스레드 환경에서 동기화 처리 없이 객체를 공유할 수 있다.(항상 동일한 값을 반환함으로)
- 부수효과를 피해 오류가능성이 최소화된다.
- 가비지 컬렉션의 성능을 높일 수 있다.
만드는 법
- 클래스를 final로 선언한다.
- 모든 클래스 변수와 인스턴스 변수를 private와 final로 선언한다.
- 객체를 생성하기 위한 생성자 또는 정적 팩토리 메소드를 추가한다.
- 참조에 의해 변경가능성이 있는 경우 방어적 복사를 이용하여 전달한다.
출처 및 참고