도메인 주도 설계 구현
값 객체(Value Objects)
미니멀리즘으로 통합하기
값 객체를 사용해 유입되는 업스트림 컨텍스트로부터 다운스트림 컨텍스트의 개념을 모델링하자
불변값을 결과로 사용한다면 책임을 덜 수 있다.
값으로 표현되는 표준 타입
여러 시스템과 애플리케이션에선 표준타입이 필요하다. 표준 타입은 대상의 타입을 나타내는 서술적 객체다.
표준화의 수준에 따라 이 타입은 애플리케이션 수준에서만 유지관리 될수도 있고 사내 공유 데이터베이스 수준으로 그 중요성이 올라갈수도 있다.
표준 타입은 스스로 전담하는 자신만의 네이티브 바운디드 컨텍스트에 따라 자신의 수명이 결정되기 때문에 이를 엔터티로 생각할 수도 있다.
- 상태 패턴이 유해하다고 생각하는 이유 : 타입에 의해 지원되는 행동의 추상적 구현을 생성해야 하고, 주어진 상태에 특화된 구현을 제공하기 위해 행동을 재정이 해야 한다.
값 객체의 테스트
테스트 스타일은 모델의 사용자 메뉴얼을 작성하는 상황에 비춰 생각 해볼수 있다. 이런 상황에서 테스트는 클라이언트가 특정 도메인을 사용하는 가장 적절한 예제가 된다.
테스트는 도메인적 의미가 있어야 한다 : 모델 테스트는 반드시 도메인 전문가의 입장에서 의미가 있어야 한다.
구현
값의 불변성 유지하기
오직 기본 생성자만이 속성/특성을 설정하기 위해 자가 위임을 사용한다. 다른 메소드는 세터 메소드로 자가 위임해서는 안된다.
셋터는 프라이빗 영역이므로 변경할수있는 특성이 노출 되지 않는다.
매개변수 유효성을 위한 어설션은 가드라고 불린다.