[architecture Series Ddd] 03.02.value
February 17, 2025
2. 값 객체
1. 정의
- 도메인 내에서 개념을 나타내는 불변 객체
- 값 객체는 정의하는 속성 또는 속성 애그리거트를 캡슐화한다.
- 엔티티 객체와 달리 값 객체에는 고유한 ID가 없다.
- 동등성은 속성의 동등성에 의해 결정된다.
2. 특성
- 불변성:
- 인스턴스화 후에는 상태 수정이 불가하다.
- 수정한다면 새로운 인스턴스를 뱉는 식으로 한다.
- 속성별 동등성:
- 동등성은 동일성이 아니라 속성의 동등성을 기반으로 한다.
- sideEffect가 없다.
- 메소드는 외부 상태를 수정하지 않고 속성에 대한 계산이나 변환만 수행
3. 용도
- 모델링 개념 : 중요한 개념을 나타낼 수 있다. 개념의 동작과 속성을 독립적으로 캡쳐
- 동작 캡슐화 : 개념과 관련된 특정 동작을 캡슐화할 수 있다.
- 비즈니스 규칙 적용 : 속성의 정확성을
- 검증하여 비즈니스 규칙을 적용할 수 있다.
4. 지침
- 불변성
- 동일성
- 캡슐화
- 복제 : 업데이트된 속성을 반영하기 위해서 새로운 인스턴스를 뱉기 위해서 값을 복사해야 한다.