Вот пример кода, в котором у нас есть метод, который отвечает на вопросы «Может ли пользователь X просмотреть продукт Y?»
public namespace Domain
{
public class User
{
...
public bool CanWriteReview(Product product)
{
return this.IsApproved
&& !Kernel.Get<ReviewRepository>().UserHasReviewed(product)
&& !Kernel.Get<SellerAccountRepository>().UserHasSellerAccount(this);
}
}
}
Мне не нравится использовать этот метод в домене POCO, потому что он имеет слишком много зависимостей, которые не могут быть введены и должны быть извлечены непосредственно из ядра. Куда бы вы положили этот тип логики?
Я считаю, что шаблон доменных событий является полезным средством для извлечения подобной логики, которая зависит от изменений состояния домена, из домена. Существует ли подобная схема для методов, описанных выше?