1

假设我有两个简单的实体:用户和评论。如果用户调用 Review 存储库有多糟糕?用户获得评论的“干净”方式是什么?

class User
{
    public function getReviews()
    {
        return reviewRepository.findByUser(this);
    }
}

我确实看过这个问题,但尽管他们说这是一种不好的做法,但我没有在那里找到答案。

4

1 回答 1

3

DDD 中干净的方法是让 UserRepository 在请求用户时填写用户的评论。

class UserRepository
{
  public User GetUserByID(long userId)
  {
    var user = CreateUser();
    user.Reviews = FindReviewsforUser(userID);
    return user;
  }
}

但在执行此操作之前,您需要验证域中的用户实体也是 AggregateRoot!只有 AggregateRoots 有存储库。在设计聚合根时,请查看此问题以查看或获得对问题的一些见解。

于 2011-07-25T14:56:09.913 回答