값은 불변 데이터다. 왜 불변 객체를 가변 객체보다 선호하고, 데이터를 표현하는 객체를 다른
유형의 객체보다 더 선호해야 할까? 이 주제는 이 책에서 여러 번 다룰 주제다. 지금은 내부 상
태가 바뀌지 않으므로 불변 객체에 대해 추론하는 게 가변 객체에 대해 추론하는 것보다 더 쉽
기 때문에 다음과 같은 사실이 성립한다고 설명한다.
●
맵의 키나 집합 원소로 불변 객체를 넣을 수 있다.
●
불변 객체의 불변 컬렉션에 대해 이터레이션하는 경우 원소가 달라질지 염려할 필요가 없다.
●
초기 상태를 깊이 복사
deep
copy
하지 않고도 다양한 시나리오를 탐험할 수 있다(불변 객체를 쓰면 되돌
리기나 다시하기 등도 쉽게 구현할 수 있다).
●
여러 스레드에서 불변 객체를 안전하게 공유할 수 있다.
5.4
빈을 값으로 리팩터링하기
가변 빈이나
POJO
를 사용하는 부분을 값으로 리팩터링하는 과정을 살펴보자.
트래블레이터는 모바일 앱을 제공하며, 안드로이드 버전은 자바로 쓰여있다. 코드에서는 사용
자 설정을 자바빈
UserPreferences
로 표현한다.
예제
5.1
[
beans
-
to
-
values
.
0
:
src
/
main
/
java
/
travelator
/
mobile
/
UserPreferences
.
java
]
public ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.