-
[도메인 주도 설계 철저 입문] 값 객체독서_dev/DDD 2024. 7. 19. 00:17
값 객체
→ 시스템 특유의 ‘값’ 을 표현하는 객체 → 코드 자체가 문서
ㄴ 성질 → 불변 / 교환 / 등가 비교
ㄴ 기준 → 규칙 / 낱개
ㄴ 행동 정의 → 자신만의 규칙을 갖는 도메인 객체
ㄴ 장점 → 표현력 증가 / 무결성 유지 / 오대입 방지 / 로직 분산 방지2.1 값 객체란 ?
값 객체란 시스템 특유의 '값'을 표현하기 위해 정의하는 객체다. 값 객체 역시 값의 성질을 그대로 갖는다.
2.2 값의 성질과 값 객체의 구현
값(객체)의 성질
- 변하지 않는다.
대입은 값이 변하는 것이 아니다.
내용이 변하는 것이지 값 자체가 수정되는 것은 아니다.- 주고받을 수 있다. 교환 가능하다.
값 자체 수정이 아닌 내용의 수정, 대입- 등가성을 비교할 수 있다.
값끼리 직접 비교. 값 객체라면 일부를 꺼내 비교하는 건 부자연스러움.
속성을 추가해도 수정이 필요 없다.2.3 값 객체가 되기 위한 기준
어디까지 값 객체로 만들어야 하는가?
- 규칙이 존재하는가
- 낱개로 다루어야 하는가
—> 값 객체로 정의할만한 가치가 있는 개념을 발견하면 도메인 모델로 피드백2.4 행동이 정의된 값 객체
값 객체 -> 데이터와 행동을 한 곳에 모아둠으로써 자신만의 규칙을 갖는 도메인 객체가 된다.
값 객체는 결코 데이터를 담는 것만이 목적인 구조체가 아니다. 값 객체는 데이터와 더불어 그 데이터에 대한 행동을 한곳에 모아둠으로써 자신만의 규칙을 갖는 도메인 객체가 된다.
2.5 값 객체를 도입했을 때의 장점
- 표현력 증가
- 무결성 유지
- 오 대입 방지
- 코드가 올바른지 아닌지를 코드로 나타낼 수 있다면 그보다 더 나은 방법은 없다!
- 로직 분산 방지