封装课堂责任

时间:2012-02-27 12:08:20

标签: c# domain-driven-design

我需要一些帮助。 Iam实现用户故事,在创建新客户时,还为他创建了新帐户。创建帐户并将其分配给财产是客户责任(在客户构造函数中创建帐户)还是应该使用某些域服务类作为某种租户创建处理器,其中还会执行验证逻辑?

修改

创建客户时,也会为他创建客户帐户。客户帐户本身不存在(没有客户)。但我还需要在应用程序中使用Accounts elswhere,我应该将该帐户视为实体吗?

我部分解决就像

public class Customer:EntityBase<Customer>
{
   public Customer(...)
   {
      ...
      Account = new Account(this);
   }

   public Account Account {get; private set;}
}

public class Account
{
   public Account(Customer customer)
   {
      if(customer.Account!= null) {throw ...}
      AccountOwner = customer;
   }
   public Customer AccountOwner {get;private set;}
}

2 个答案:

答案 0 :(得分:1)

为了给你一个好的答案,我们需要更多的背景。假设客户总是需要一个账户(这只是一个假设),那么我将在Customer构造函数中处理这个问题。还没有弄清楚你的课程是如何构建的,所以这是一个猜测。它还取决于账户和客户之间的关系。

答案 1 :(得分:0)

这取决于:当客户被销毁时,是否必须销毁帐户?如果是,则可以在构造函数中创建帐户。如果帐户“存活”的时间比客户长,则必须在客户之外创建帐户。