首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >域-驱动-设计服务

域-驱动-设计服务
EN

Stack Overflow用户
提问于 2015-10-27 21:07:14
回答 2查看 92关注 0票数 0

我正在寻找最好的(或更好的)方法来编写基于领域驱动设计的领域服务。这是伪码

代码语言:javascript
复制
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,哪一种方式最好,为什么?

提前谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-27 21:48:20

Cache听起来很像基础设施层的一部分,而不是域。如果是这样的话,应该从域层中删除它。领域模型不应被技术复杂性所污染。

假设Cache确实属于该领域,如果没有有关该领域的更多信息,就很难回答这个问题。

一般而言:

  • 如果CacheCustomerAccount是同一个聚合的一部分,则应该从聚合根访问Cache
  • 如果它们不是相同的聚合,但仍然属于相同的有界上下文,则使用域服务来执行同时需要CustomerAccountCache的操作。
  • 如果Cache属于另一个有界上下文,请使用域事件通知它。

如果可能的话,我建议在UL中更改Cache的名称。它可能导致您团队中的程序员之间的误解,特别是当新的人加入团队时。

票数 3
EN

Stack Overflow用户

发布于 2015-10-27 21:15:00

DDD和测试驱动的开发通常是并驾齐驱的,所以从TDD的角度来看,您希望保持它的原样,避免直接调用静态刷新方法;否则,单元测试将非常困难。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33378476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档