기존 책 내용을 필자가 생각하기에 이해하기 쉽게 조금 변형하였습니다.
불변 객체
-
생성 비용이 아주 비싼 객체가
반복해서 필요하다면 캐싱하여 재사용하는게 좋다.
Example
Boolean goodgid1 = new Boolean(true);
Boolean goodgid2 = new Boolean(true);
Boolean goodgid3 = new Boolean(true);
Boolean goodgid4 = Boolean.valueOf(true);
Boolean goodgid5 = Boolean.valueOf(true);
Boolean goodgid6 = Boolean.valueOf(true);
주소값
-
goodgid 1~3의 주소 값은 각각 다르다.
왜냐하면 항상 새로운 인스턴스를 생성하였기 때문이다.
-
반면 goodgid 4~5의 주소 값은 같다.
즉 불변 객체를 Return하였기 때문에 동일한 인스턴스를 사용한다.
Summary
-
어떤 객체가 반복적으로 필요하다면
새로운 인스턴스를 매번 만드는 생성자 방식(ex. new Boolean( ))보단
불변 객체를 Return하는 팩터리 메소드(ex. Boolean.valueOf( ))를 사용하는 것이 좋다.