从用例到代码的四次翻译:领域驱动设计在B端营销系统中的战略建模、聚合取舍与分层落地

发布时间:2026/11/2 6:11:41
从用例到代码的四次翻译:领域驱动设计在B端营销系统中的战略建模、聚合取舍与分层落地

目录

一、先把喧嚣放下:DDD 到底值不值得

(一)一套话术的三段式

(二)复杂性的三种来源

1、隐晦:难理解

2、耦合:难改动

3、变化:难扩展

(三)DDD 能做什么、不能做什么

1、把领域知识搬进代码

2、什么时候不必用

3、选择站队的前提

二、营销系统的问题空间

(一)四类用户与三个核心问题

(二)四层模型与两个陷阱

1、解决方案域的四层模型

2、陷阱一:跳到数据模型

3、陷阱二:跳到流程脚本

(三)三段式落地路线

三、战略设计:从用例到边界

(一)确定用例

1、四种表达方式

2、营销系统的用例图

3、二八原则

(二)统一语言

1、名词动词分析

2、去伪存真、抽象合并

3、术语表三件套

4、七个标识的教训

4.1 实验设计

4.2 实验结果

(三)梳理关系,形成概念模型

(四)拆解子域

1、三种拆法

2、营销系统的五个子域

3、核心、支撑与通用

(五)上下文映射与防腐层

1、映射关系一览

2、营销系统的上下文图

3、防腐层长什么样

(六)验证与迭代

1、场景走查

2、业务预判

3、迭代的三个来源

四、战术设计:从概念模型到对象模型

(一)三种映射

1、概念分层用继承

2、概念关系用组合

3、概念状态用状态机

(二)实体与值对象

(三)聚合根的粒度

1、小聚合

2、大聚合

3、适度封装

4、三条原则

(四)仿真实测

1、实验设计

2、结果解读

3、局限与延伸

(五)领域服务与充血模型

1、领域服务放什么

2、充血还是贫血

3、方法名说业务话

(六)营销系统聚合全景

五、代码架构:把设计映射为实现

(一)三种架构,同一个圆心

(二)营销系统的分层落地

1、用户接口层

2、应用层

3、领域层

4、基础设施层

5、通用层

(三)工程结构与依赖守护

1、模块与包

2、用测试守护依赖方向

(四)一次请求的旅程

六、他山之石:交易系统的分层演进

(一)交易系统的分层

(二)从订单耦合到上下文拆分

1、过度耦合

2、贫血症与失忆症

3、演进式拆分

(三)同与不同

七、常见误区与落地清单

(一)四个误区

(二)落地清单

(三)如何衡量收益

八、结语

参考文章


干货分享,感谢您的阅读!

一个需求从会议室走到生产环境,中间要经历好几次"翻译":业务方讲的是玩法,产品把玩法整理成功能,研发把功能拆成类和表,最后再变成一行行代码和一张张表结构。每一次翻译都可能丢掉一点业务含义——业务说"档位",代码里叫rule;业务说"商户",系统里有七种 ID;业务说"改了库存要重新审批",代码里只有一句updateStatus(2)。丢得多了,系统就会变成只有原作者能看懂、改一处坏三处的样子。

领域驱动设计(Domain-Driven Design,以下简称 DDD)要解决的,恰恰是这个"翻译损耗"问题。它并不神秘:先和业务一起把概念说清楚,形成统一语言和概念模型;再把概念模型拆成边界清晰的子域与上下文;然后把概念映射成实体、值对象、聚合和领域服务;最后用分层架构和依赖倒置把这些设计落成代码。本文以一个面向商户的 B 端营销系统为主线,把这条链路从头到尾走一遍:哪些步骤真正有用、每一步该交付什么、聚合到底该切多大、代码该怎么分层,并配两段可运行的 Java 程序,用实测数字说明"统一语言"和"聚合粒度"这两件看似务虚的事,在工程上究竟值多少。

这里不展开 DDD 的基本概念(实体、值对象、聚合、限界上下文等),默认读者已有初步了解;需要回顾基础的读者,可以先翻一下文末参考文章里的理论总结篇。