Skip to content

最佳实践模式库 ​

这里是一套可落地的模式库:每篇文档把一个框架能力点写成一条落地模式(原则 + 代码骨架 + ⚠️约束 + 反模式),读者照着即可生成正确代码。新模块开发 = 查模式 + 套模板——把示例中的聚合 / 存储替换成目标场景,即得新实现(举一反三)。

模式链路 ​

从聚合建模到事件一致性,本模式库覆盖全链路:

text
写模型建模 → 业务规则与校验 → 应用编排 → 持久化 / 读模型 → 基础设施装配 → 事件与一致性

上表是代码落地链路;此外 ⑦ 设计文档(语义 → 写 / 读 → 事实快照) 与 ⑧ 代码注释规范 是横切环节——⑦ 不产代码,规定「动手之前聚合怎么识别 / 演进,设计文档怎么分三契约 + 一快照写」;⑧ 是横切编码规范,规定领域模型与应用服务「注释写什么、写到什么程度」。两者都服务于人可评审、AI 可落地。

环节覆盖的落地问题
写模型建模聚合边界怎么划、表怎么落、实体 / 值对象 / 枚举怎么写、规则码与操作码怎么声明
业务规则与校验校验规则怎么组织、怎么触发、外部依赖校验怎么接入
应用编排应用服务层怎么与聚合协作、操作/事件顺序与工作单元清理
持久化 / 读模型写模型仓储怎么实现、聚合到异构存储的读模型怎么落
基础设施装配MySQL / PostgreSQL / Elasticsearch / RocketMQ / Outbox 的 Bean 怎么装配
事件与一致性事件怎么建模、跨模块消息怎么可靠投递

模式清单 ​

① 写模型建模 ​

文档落地问题举一反三(示例 → 泛化)
聚合目录落地骨架新建聚合先初始化目录、按图索骥到各模式Order 目录 → 任何聚合目录
聚合设计原则聚合边界与粒度、框架父类已托管能力、聚合根编码规范Order → 任何聚合根
聚合数据库设计原则表边界 = 聚合边界、字段列映射、复杂类型存储订单多表 → 任何聚合的表结构
普通实体设计原则聚合内子实体的设计与编码OrderItem → 任何聚合内实体
值对象最佳实践结构相等的可嵌入数据结构、与实体/枚举取舍地址 / 金额 → 任何值对象
枚举值对象最佳实践用 IEnumValue 替代 Java enum、CODE 持久化订单状态 → 任何离散常量集合
规则注册表设计校验消息码集中声明、消灭魔法字符串Order 规则码 → 任何聚合校验码
操作注册表设计领域操作集中声明、事件自动归属成因支付/取消操作 → 任何聚合操作
领域服务落地模式四类领域服务契约怎么声明、应用层怎么实现订单计算/ID生成 → 任何领域能力

② 业务规则与校验 ​

文档落地问题举一反三(示例 → 泛化)
聚合业务规则(OrderRule 范式){聚合}Rule 容器 + {聚合}RuleRegistry + 契约注入,校验规则统一触发订单规则 → 任何聚合规则

③ 应用编排 ​

文档落地问题举一反三(示例 → 泛化)
应用层落地模式WriteService 编排、execute 模板、创建/修改/预校验三场景订单应用服务 → 任何应用服务

④ 持久化 / 读模型 ​

文档落地问题举一反三(示例 → 泛化)
仓储设计原则写模型仓储定位、框架契约、MyBatis 落地与测试订单仓储 → 任何写模型仓储
投影读模型代码落地指南聚合 → 异构存储读模型的代码落地,以及读侧三跳取数(选路 / 检索 / 裁剪)Order + Es → 任何聚合 + 任何异构存储

⑤ 基础设施装配 ​

文档落地问题举一反三(示例 → 泛化)
MySQL 配置设计原则数据源、连接池与事务管理器装配MySQL → 任何关系型数据库的 JDBC 层
PostgreSQL 配置设计原则PG 数据源、方言 XML、databaseId、建表脚本与 TypeHandler 适配MySQL → PostgreSQL 的方言装配
MyBatis 配置设计原则SqlSessionFactory / TypeHandler 多聚合装配 / Mapper XML 加载(含框架固定 Mapper)MyBatis → 任何 ORM 会话装配
Elasticsearch 配置设计原则RestClient → Transport → Client 三层构建、认证超时ES → 任何外部存储客户端
事件管理器装配与选择IEventManager 二选一装配原则、本地线程池实现与数据丢失风险事件管理器 → 任何应用
RocketMQ 配置设计原则应用级 MQ 装配、主题路由、订阅落地Order → MQ → 任何聚合事件
Kafka 配置设计原则与 RocketMQ 互斥的应用级 Kafka 装配、消费者组、延时/重试回投器Order → Kafka → 任何聚合事件
Outbox 链路装配事务性发件箱五个协作 Bean 的装配Order → Outbox → 任何聚合事件

⑥ 事件与一致性 ​

文档落地问题举一反三(示例 → 泛化)
事件建模指南事件只带聚合标识、buildEvent 工厂、即时/延迟事件订单事件 → 任何领域事件
事件订阅领域服务落地模式EVENT_SUBSCRIBER 契约怎么声明、订阅者怎么写、注册表怎么绑定订单发短信/发积分/投影 ES → 任何聚合的事件响应动作
对外广播落地模式领域事件怎么触发对外广播、信封与订阅者怎么写、topic 怎么定义订单对外广播 → 任何聚合的标准信封推送

⑦ 设计文档(识别 → 演进 → 文档标准) ​

本主题是横切环节:它不产出代码,而是规定「动手之前那份设计文档该怎么写」以及「动笔之前聚合怎么识别 / 演进」,使人可评审、AI 可落地。三者按生命周期排序——先识别聚合、再演进既有聚合,最终落为一份符合《设计文档编写规范》的统一结构文档。

文档性质落地问题举一反三(示例 → 泛化)
聚合识别设计原则方法论(原则)全新 / 加聚合时,从需求中识别聚合候选、边界与不变量订单域识别 → 任何域的聚合识别
聚合演进设计原则方法论(原则)既有聚合加操作 / 子实体 / 事件时,设计文档怎么写(对应「修改场景」)订单发货修正 → 任何聚合的迭代演进
设计文档标准(三层)文档体系(规范)一个聚合的文档分「业务语义 → 写设计 → 投影读设计」三层,各自的职责、边界与推导关系订单三层文档 → 任何聚合的文档体系
① 业务语义文档文档模板8 章 + 3 附录:属性 / 动作 / 事件 / 规则 / 状态 / 依赖 / 查询场景订单业务语义 → 任何聚合的业务语义
② 聚合写设计文档文档模板11 节:静态结构 ~ 持久化,含改动清单 / 测试 / 风险 / 实施回填订单写设计 → 任何聚合的写设计
③ 投影读设计文档文档模板6 节:读源与澄清、四角色、读源结构、构建同步、查询设计订单投影读设计 → 任何聚合的读设计
④ 聚合事实文档模板(快照)6 节:从代码推导当前实际形态,包含与语义的偏离及处置订单事实文档 → 任何聚合的当前态
实施前置条件机制(规范)生成代码前必须确认的项目级前提,未确认项阻断对应产出任何项目的实施前闸门

⑧ 编码规范(横切) ​

本主题是横切编码规范:不产代码结构,只规定代码里的业务语义怎么表达。适用于 ① 写模型建模与 ③ 应用编排产出的所有代码。

文档性质落地问题举一反三(示例 → 泛化)
代码注释规范编码规范(横切)实体字段、业务方法、Input 类与字段的注释标准、格式与反模式Order 字段 / OrderItem 方法 / PayOrderInput → 任何实体、任何 Input

如何使用 ​

  1. 找模式:新模块先定位到对应环节(建模 / 规则 / 编排 / 持久化 / 装配 / 事件),找到最贴近的落地模式文档。
  2. 套模板:把文档中的示例聚合 / 存储替换为目标场景,按代码骨架逐个落地组件。
  3. 避坑:对照每篇的 ⚠️ 约束与常见反模式表,在实现前预判易错点。
  4. 验证:落地后按各篇的规则自检,并补充单元测试。

框架能力详解 ​

模式库落地的是框架能力,框架底层机制与 API 见核心模块与集成模块。