2. 값 객체

1. 정의

  • 도메인 내에서 개념을 나타내는 불변 객체
  • 값 객체는 정의하는 속성 또는 속성 애그리거트를 캡슐화한다.
  • 엔티티 객체와 달리 값 객체에는 고유한 ID가 없다.
  • 동등성은 속성의 동등성에 의해 결정된다.

2. 특성

  • 불변성:
    • 인스턴스화 후에는 상태 수정이 불가하다.
    • 수정한다면 새로운 인스턴스를 뱉는 식으로 한다.
  • 속성별 동등성:
    • 동등성은 동일성이 아니라 속성의 동등성을 기반으로 한다.
  • sideEffect가 없다.
    • 메소드는 외부 상태를 수정하지 않고 속성에 대한 계산이나 변환만 수행

3. 용도

  • 모델링 개념 : 중요한 개념을 나타낼 수 있다. 개념의 동작과 속성을 독립적으로 캡쳐
  • 동작 캡슐화 : 개념과 관련된 특정 동작을 캡슐화할 수 있다.
  • 비즈니스 규칙 적용 : 속성의 정확성을
  • 검증하여 비즈니스 규칙을 적용할 수 있다.

4. 지침

  • 불변성
  • 동일성
  • 캡슐화
  • 복제 : 업데이트된 속성을 반영하기 위해서 새로운 인스턴스를 뱉기 위해서 값을 복사해야 한다.