领域驱动设计学习(七)

120 阅读2分钟

「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战image.png 昨天学习领域驱动,看到了仓储那一块。今天接着往下看。

DDD的架构

DDD不仅为我们提供了领域对象建模的方法论,还为我们提供了几种系统架构的参考。总的来说DDD中的架构有以下几种:

  • 传统DDD架构
  • 清洁架构
  • 六边形架构
  • CQRS架构 我们来详细看看每个架构给我们带来了什么。

传统的DDD架构

传统的DDD架构是相对与之前的web mvc架构而言的。web mvc通常是由controller、service、repository层组成,我们的业务逻辑由service层负责,数据存储由repository层去持久化。在这个架构里,service和repository层扮演了重要的角色。如果是之前的web mvc模式的话,复杂的查询可能会以sql的形式出现在repository层。这种情况会将业务代码泄漏到repository,不利于后期的扩展维护。因此,传统的DDD架构仅仅是在原来的基础上增加了domain model层,对应DDD里的实体概念。然后将repository作为基础设施层和数据库打交道,具体如下: image.png 基础设施层不止可以与数据库打交道,一切和第三方库或者设施的代码都应该放到这里,由领域层往上都不能被这些第三方的代码所污染。层与层之间通过接口进行交互,只能传递业务参数,意味着这些参数不能和第三方库有任何耦合。这样,我们可以随时替换基础设施层的基础,而不用动我们领域层的代码。领域层对应我们之前提到的业务对象。自然业务对象不能是贫血模型,作为一个领域对象,它负责自己领域的业务,是个有血有肉的对象,提供对领域的各种操作,并且对这些操作进行响应和持久化操作。service层相比之前的职能,现在只作为业务对象的协调者,不做业务处理。