基于DDD编程的三个模式

327 阅读2分钟

1.背景

开发过程中的两个比较深入的问题:

第一,在面向过程的程序里,领域逻辑一般是写在应用服务里的,那么,DDD 有什么不同的思路呢?为了解决这个问题,我们需要掌握 DDD 的领域服务模式和表意接口模式。

第二,过去我们常常在应用服务里面直接 “New” 出领域对象,如果创建领域对象的逻辑比较复杂,那要怎么办呢?对于这个问题,我们需要了解 DDD 的工厂模式。

2.DDD解决方案

2.1“表意接口”(Intention-Revealing Interfaces)模式

我们应该用能够表达领域知识的词汇进行命名,这就是 DDD 的表意接口(Intention-Revealing Interfaces)模式。违反了表意接口模式,常常会出现过长的函数和注释这两个坏味道,我们可以通过抽取函数这个重构手法进行了解决。

2.2“领域服务”(Domain Service)模式

领域逻辑应该放在领域层,不属于领域逻辑的代码逻辑通常称为“应用逻辑”。“应用逻辑”和“领域逻辑”的本质区别在于是否蕴含着领域专家关心的领域知识。我们应该首先考虑把领域逻辑放在领域对象里。但那些不适合放到领域对象的逻辑,可以放在领域服务。

2.3“工厂”(Factory)模式

对于复杂领域对象的创建,可以采用 DDD 的工厂(Factory)模式。这个模式有多种实现方式,对于参数较少的情况,可以直接用参数调用工厂,参数较多时,则可以采用 Builder 模式。

极客时间《手把手教你落地DDD》第11课学习笔记 Day11