我正在寻找基于域驱动设计编写域服务的最佳(或更好)方法。这是伪代码
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.
}
}
我的问题是我应该在AccountService中使用RefreshAccount()并以这种方式调用它吗?或者直接调用缓存类?无论哪种方式都运行正常,但我的问题是,从设计的角度来看,特别是DDD,哪种方式最好,为什么?
提前致谢!!
答案 0 :(得分:2)
Cache
听起来很像基础设施层的一部分,而不是域。如果是这种情况,则应将其从域图层中删除。域模型不应受到技术复杂性的污染。
假设Cache
确实属于域名,如果没有关于域名的更多信息,很难回答这个问题。
一般来说:
Cache
和CustomerAccount
是同一聚合的一部分,则应从聚合根访问Cache
。 CustomerAccount
和Cache
的操作。Cache
属于另一个有界上下文,请使用域事件通知它。如果可能,我建议更改UL中Cache
的名称。这可能会导致团队中程序员之间产生误解,尤其是当新人加入团队时。
答案 1 :(得分:0)
DDD和测试驱动开发通常是相辅相成的,因此从TDD的角度来看,您希望保持它的方式并避免直接调用静态刷新方法;否则将很难正确地进行单元测试。