我正在寻找最好的(或更好的)方法来编写基于领域驱动设计的领域服务。这是伪码
public class CustomerAccount
{
public string AccountNumber {get; set;}
public string CustomerName {get; set;}
public string PhoneNumber {get; set;}
public string HomeAddress {get; set;}
}
// Domain Service Class
public class AccountService
{
public virtual void RefreshAccount( CustomerAccount acct)
{
// Some code here to refresh the class from cache...
cache.refresh( acct )
}
}
public static class Cache
{
public static refresh(CustomerAccount acct)
{
// refreshing class here.
}
}我的问题是,我是否应该将RefreshAccount()包含在AccountService中,并以这种方式调用它?还是直接调用缓存类?这两种方法都很好,但我的问题是,从设计的角度来看,特别是DDD,哪一种方式最好,为什么?
提前谢谢!!
发布于 2015-10-27 21:48:20
Cache听起来很像基础设施层的一部分,而不是域。如果是这样的话,应该从域层中删除它。领域模型不应被技术复杂性所污染。
假设Cache确实属于该领域,如果没有有关该领域的更多信息,就很难回答这个问题。
一般而言:
Cache和CustomerAccount是同一个聚合的一部分,则应该从聚合根访问Cache。CustomerAccount和Cache的操作。Cache属于另一个有界上下文,请使用域事件通知它。如果可能的话,我建议在UL中更改Cache的名称。它可能导致您团队中的程序员之间的误解,特别是当新的人加入团队时。
发布于 2015-10-27 21:15:00
DDD和测试驱动的开发通常是并驾齐驱的,所以从TDD的角度来看,您希望保持它的原样,避免直接调用静态刷新方法;否则,单元测试将非常困难。
https://stackoverflow.com/questions/33378476
复制相似问题