Domain driven design 回答问题的复杂方法的好地方

Domain driven design 回答问题的复杂方法的好地方,domain-driven-design,Domain Driven Design,下面是一些示例代码,其中我们有一个方法可以回答“用户X可以查看产品Y吗?” 公共命名空间域 { 公共类用户 { ... 公共bool CanWriteReview(产品) { 返回此文件。我已批准 &&!Kernel.Get().userhasrevied(产品) &&!Kernel.Get(); } } } 我不喜欢在域POCO中使用此方法,因为它有太多无法注入的依赖项,必须直接从内核检索。你会把这种逻辑放在哪里 我发现,将依赖于域状态更改的类服务逻辑带出域是一种有用的方法。上述方法有类似的

下面是一些示例代码,其中我们有一个方法可以回答“用户X可以查看产品Y吗?”

公共命名空间域
{
公共类用户
{
...
公共bool CanWriteReview(产品)
{
返回此文件。我已批准
&&!Kernel.Get().userhasrevied(产品)
&&!Kernel.Get();
}
}
}
我不喜欢在域POCO中使用此方法,因为它有太多无法注入的依赖项,必须直接从内核检索。你会把这种逻辑放在哪里

我发现,将依赖于域状态更改的类服务逻辑带出域是一种有用的方法。上述方法有类似的模式吗?

是这类方法的最佳选择

public namespace Domain
{
    public class User
    {
        ...

        public bool CanWriteReview(Product product)
        {
             return this.IsApproved
                 && !Kernel.Get<ReviewRepository>().UserHasReviewed(product)
                 && !Kernel.Get<SellerAccountRepository>().UserHasSellerAccount(this);
        }
    }
}