唯's Blog

笔者是一个热爱编程的 Java 程序员。

0%

DDD 精髓

大家对 DDD 应该都不陌生了,或多或少都听说过一点,我这里记录一些平常了解学习到关于 DDD 优秀的设计思想

防腐层(Anti-Corruption)

  • 简单说,就是应用不要直接依赖外域的信息,要把外域的信息转换成自己领域上下文(Context)的实体再去使用,从而实现本域和外部依赖的解耦。

  • 平常我们在代码 Coding 运用的一些设计模式,类似 门面模式 都跟防腐层的思想很像

  • 之前我们项目中在权限设计这块也借鉴了防腐层的思想,公司权限系统定义了三个模型:Group、Role、Function,系统在设计按钮功能权限,最初想的直接跟 Role 关联,类似 Save 按钮 开发,测试能够操作,接口设计上 校验 Dev-Role 和 Test-Role 。这样设计有个缺点便是 Save 按钮的权限一旦变更,就需要修改代码,如果我们使用 Function 承担我们系统这个功能的防腐层,则改动就很轻量。上面那个例子,我们定义一个 Save_Function ,它关联了 Dev-Role Test -Role 角色,变更成 TPM - Role ,我们只需要在公司权限管理系统修改 Function 关联关系就可以。

CQRS(查询与命令分离)

  • 是一种设计模式。DDD 中经常被用于分离领域模型命令修改功能与查询功能。

  • 在这一基础是上分析微服务的拆分,目前大型分布式系统,存在业务复杂、数据结构复杂。在富查询面前既要满足服务之间的隔离,又要满足查询功能的全面。为了不污染 DDD 模型保持其干净,

所以单独出来做查询服务。