Хорошее место для сложных методов, которые отвечают на вопрос - PullRequest
0 голосов
/ 08 декабря 2010

Вот пример кода, в котором у нас есть метод, который отвечает на вопросы «Может ли пользователь 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, потому что он имеет слишком много зависимостей, которые не могут быть введены и должны быть извлечены непосредственно из ядра. Куда бы вы положили этот тип логики?

Я считаю, что шаблон доменных событий является полезным средством для извлечения подобной логики, которая зависит от изменений состояния домена, из домена. Существует ли подобная схема для методов, описанных выше?

1 Ответ

2 голосов
/ 08 декабря 2010

Шаблон спецификации является хорошим кандидатом для такого рода вещей.

...