22.참조를 값으로 전환 Change Reference to Value
정의 : 작고, 불변성이고, 관리하기 어려운 참조객체가 있는 경우, 그것을 값 객체로 바꾼다.
동기
- 참조 객체로 작업하는 것이 복잡해지면 참조에서 값으로 바꿀 이유가 될 수 있다.
- 값 객체의 중요한 특징 중의 하나는 불변성이어야 한다는 것이다.
- 하나의 대해서 질의를 호출하면 언제나 같은 결과를 얻어야 한다.(불변성)
- 만약 가변성이라면 어떤 객체의 속성을 바꾸었을 때 같은 것을 나타내는 모든 객체를 업데이트 해야 한다.
절차
- 바꿀 객체가 불변성인지 불변성이 될 수 있는지 확인한다.
- Equals 메소드와 HashCode 메소드를 만들어라.
- 컴파일 및 테스트
- 팩토리 메소드를 제거하고 생성자를 public으로 하라.
Example 클래스에서 Sample 메서드를 호출했을때, Currency객체에 값을 셋팅하고 또 Currency 객체에 값을 세팅한 것이 같은가??????