카탈로그 컨텍스트 내에 있는 상품 추천 기능을 표현하는 도메인 서비스
public interface ProductRecommendationService {
List<Product> getRecommendationsOf(ProductId id);
}
위 도메인 서비스를 구현한 클래스는 인프라 영역에 위치하여 외부 시스템(추천 바운디드 컨텍스트)과의 연동을 처리한다.
public class RecSystemClient implements ProductRecommendationService {
private final ProductRepository productRepository;
private final ExternalRecClient externalRecClient;
@Ovveride
public List<Product> getRecommendatonsOf(ProductId id) {
List<RecommendatioinItem> items = externalRecClient.getRecs(id.getValue());
return toProducts(items);
}
// ...
}
RecommenationItem
은 추천 시스템의 모델을 따르는 객체이다.