回答问题的复杂方法的好地方

时间:2010-12-08 04:00:09

标签: domain-driven-design

以下是一些示例代码,其中我们有一个方法可以回答“用户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中使用此方法,因为它有太多依赖项无法注入,必须直接从内核中检索。你会把这种逻辑放在哪里?

我发现domain events pattern是一种有用的方法,可以从域中获取依赖于Domain状态更改的类似服务的逻辑。上述方法是否有类似的模式?

1 个答案:

答案 0 :(得分:2)

Specification Pattern是这种事情的好候选人。