Value Context vs Identifier Context
값
- 언어의 기본 속성으로 제공, primitive type
- 메모리 주소와 상관없음
객체지향
- 값 컨텍스트를 쓰지 않는다.
- 값을 쓰는 경우? 생성자 인자, 외에는 값을 쓰지 않음
Value Context
- 끝없는 복사본
- 상태 변화에 안전? 상태를 바꿀 수 없어서 안전해 보일뿐.
- 연산을 기반으로 로직을 전개
⇒ 복잡한 도메인을 연산으로 전환하기 어려움. 단순한 곳에서 쓰기 좋음
Id Context
- 하나의 원본
- 상태를 내부에서 책임짐
- 메시지를 기반으로 로직을 전개
폴리모피즘
대체 가능성 Substitution
- 확장된 클래스는 대상 클래스를 대체할 수 있다.
내적 일관성 Internal Identity