도메인 주도 설계 구현
모듈(module)
1 | 모든 승리의 비밀은 명백하지 않은 요소를 어떻게 조직화하느냐에 달려 있다. - 마르커스 아우렐리우스 |
모듈 설계하기
DDD 컨텍스트에서 모델 안의 모듈은 서로 간에 높은 응집도를 갖고 있는
도메인 객체를 담는 이름이 붙여진 컨테이너 역활을 수행하며 각이 다른 모듈에 있는 클래스 사이에
낮은 결합도를 유지하는 것이 목표가 돼야 한다.
- 모듈 설계의 간단한 규칙
- 모델링 개념에 맞춰 모듈을 설계하자
- 유비쿼터스 언어에 맞춰 모듈을 명명하자
- 모델에서 사용하는 일반적인 컴포넌트 타입이나 패턴에 따라서 기계적으로 모델을 생성하지 말자
- 느슨하게 결합된 모듈을 설계하자
- 결합이 필요하다면 짝이 되는 모듈 사이에서 비순환전 의존성이 형성되도록 노력하자
- 자식 모듈과 부모 모듈 사이에 규칙은 느슨하게 하자
- 모듈을 모델의 정적인 개념에 따라 만들지 말고 모듈이 감고 있는 객체에 맞추도록하자
모듈은 모델의 가장 중용한 구성요소로 간주하고 최대한 의미를 담고 사려 깊에 이름을 정해 모듈을 생성하자
기본 모듈 명명 규칙
이름의 계층은 일반적으로 이를 생성한 조직의 이름이 인터넷 도메인과 함께 조합돼 시작한다.
모델을 위한 모듈 명명규칙
모듈 이름에서 다음으로 이어지는 부분은 바운디드 컨텍스트를 나타낸다.
바운디드 컨텍스트에 기반해 이름을 짓겠다는 결정은 바람직한 접근이다.