第2章学习笔记:领域建模与边界设计
课程笔记从业务语言、状态与不变量建立模型,避免把数据库表名当领域。
关联:章节 第2章 领域建模与边界设计
第2章笔记:领域建模与边界设计
本章目标
从业务语言、状态与不变量建立模型,避免把数据库表名当领域。 本章不是术语表,而是一条从问题到证据的工作链。先确认用户或团队要保护的结果,再把决定写进可版本化制品,最后由测试、指标、反例或演练证明它在边界与故障下仍成立。
七节联系
- 统一语言与领域词典:同一个词在产品、财务和代码中含义不一致,会把歧义固化进接口;关键规则是词典条目必须含定义、反例、状态和责任边界,并随决策版本化。
- 实体、值对象与聚合:实体靠身份延续,值对象靠属性相等,聚合划定一次事务保持一致的边界;关键规则是聚合边界围绕业务不变量选择,不围绕页面或表数量选择。
- 状态机与生命周期:状态机把允许状态、事件、守卫条件和副作用变成可枚举契约;关键规则是任何状态迁移都要说明前置状态、权限、原子变化、外部副作用和重试语义。
- 业务不变量与决策表:不变量描述所有合法状态都成立的条件,决策表覆盖多条件组合;关键规则是先写不变量再选数据结构;每条规则至少有正例、边界例和反例。
- 限界上下文与上下文映射:大型领域没有一个万能模型;不同上下文可对同一现实使用不同表示;关键规则是跨边界只共享明确契约,不共享隐含数据库语义或内部对象。
- 事件风暴与时间线建模:按过去式事件回放业务时间线,可以发现命令、策略、读模型和异常分支;关键规则是事件必须是已经发生的事实;命令可能被拒绝,二者不能混写。
- 用示例澄清模型并反查:抽象模型只有经具体输入输出和反例检验才可信;关键规则是示例应覆盖等价类与边界值,反例必须能推翻至少一个错误解释。
学习时给七节画依赖箭头:前一节产出的对象、规则或制品如何成为后一节输入?若某节可以被随意挪走而完全不影响上下文,说明你仍在孤立背诵,需要用一个贯穿案例重新连接。
章内练习
- 用“明确‘订单’‘支付单’‘履约单’的身份、生命周期和拥有团队,禁止在评审中混用”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“订单是实体,金额与币种组成Money值对象,订单项只能经订单聚合根修改”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“退款从requested到approved再到settled,拒绝settled后再次approve,并记录操作者与幂等键”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“优惠资格由会员级别、地区、时间和商品类型决定,用决策表找出遗漏组合与冲突规则”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
每次练习都保留背景、输入、决定、输出、验证、失败处置和负责人。只写结论不算完成;只贴截图也不算证据。完成后交换给同伴,只允许对方根据制品复现你的判断,无法复现处就是下一轮修改入口。
错误复盘
把错题标成目标误判、边界遗漏、责任空缺、契约不清、验证不足或恢复缺失。不要写“粗心”。一周后更换领域重做一道情境题;能在新名词下保持同一证据链,才说明方法已经迁移。阶段卷使用独立题池,不能靠记住随课题答案过关。