애그리게이트
애그리게이트란?
- 애그리게이트에는 원소에 대한 접근을 캡슐화한 루트 엔티티(장바구니)가 있음
- 원소마다 고유한 정체성이 있지만 시스템의 나머지 부분은 장바구니를 나눌 수 없는 단일 객체처럼 참조해야 함
애그리게이트 패턴
- DDD 커뮤니티에서 공유하는 설계 패턴
- 다른 도메인 객체들을 포함하며 이 객체 컬렉션 전체를 한꺼번에 다룰 수 있게 해주는 도메인 객체
- 애그리게이트에 있는 객체를 변경하는 유일한 방법은 애그리게이트와 그 안의 객체 전체를 불러와 애그리게이트가 지원하는 메서드를 호출하는 방뻐
- 관련 도메인을 하나의 군집으로 묶은 것
애그리게이트 선택
- 애그리게이트 내부에서 다뤄야 하는 객체는 Batch
- Shipment를 경계로 사용할 수도 있음
- 각 선적에는 여러 배치가 들어갈 수 있고 모든 배치는 동시에 창고로 전달
- Warehouse를 경게로 사용할 수도 있음
- 각 창고에는 여러 배치가 들어있고 모든 재고 수량을 동시에 파악하는 게 좋음
- Shipment, Warehouse 모두 DEADLY-SPOON, FLIMSY-DESK를 동시에 할당할 수 있지만 같은 창고 혹은 같은 선적에 포함되어 있어야 할당 가능하기 때문
- 주문 라인을 할당할 때는 주문 라인으로 같은 SKU에 속하는 배치에만 관심이 있음
- GlobalSkuStock 같은 개념
- 주어진 모든 SKU에 속한 모든 배치의 컬렉션
- 이름이 좋아 보이지 않아 아래 이름을 검토 후 최종 Product이라 부르기로 결정
- SkuStock, Stock, ProductStock 등
관련 문서
Plugin Backlinks: 아무 것도 없습니다.