课程大纲
Part1 – 将需求划分为上下文 | |
一、发现需求里的领域知识 1.如何发现领域中的知识 2.业务分析中模型转换的问题 3.领域模型 VS 分析模型 4.如何说“业务的语言“ 描述需求 5.通用语言关键点 6.如何避免沟通漏斗 – 结构化沟通 7.演习:使用通用语言对需求进行挖掘与明确 | |
二、限界上下文与微服务 1.建模的本质 与 限界上下文 2.限界上下文的目的:消除歧义 3.限界上下文与通用语言 4.案例:支付宝关联银行账户的建模分析 5.不要将有二义性的领域概念放在同一限界上下文中 6.理解限界上下文 7.演习:限界上下文案例分析 – 信用卡申请 | |
Part2 – 将上下文组织为服务 | |
三、从上下文到服务 1.通过服务来实现独立自治的组件 2.服务发现概念模型 3.AP的Eureka vs CP的Consul 4.注册中心实现 5.演习:使用 Nacos 进行服务发现与配置管理 6.网关路由 7.网关的职责 8.网络 I/O 模型 9.BFF 网关 10.演习:使用Gateway 进行网关路由 11.客户端负载均衡 12.客户端负载均衡器 13.代理负载均衡器 14.演习:使用 Ribbon进行客户端负载均衡 | |
Part3 – 将服务进行对象化建模 | |
| 四、实体与值对象 – 数据容器还是行为载体 1.如何避免贫血,实体与领域服务之间的分寸 2.唯一标识 3.案例:实现实体层超类型(Layer Supertype) 4.实战 - 任务分配执行系统 实体行为归属甄别 5.值对象的特征 6.为什么值对象这么容易被忽略 |
五、聚合 – 比类更高一层的封装 1.聚合设计原则 2.聚合的一致性边界 3.一个事务中只处理一个聚合 4.聚合内实现事务一致性 5.聚合外实现最终一致性 6.聚合设计的注意点 | |
六、对象建模演习: 演习:如何通过使用实体值对象聚合根据需求进行建模与演化 | |
Part4 – 如何改善代码设计 | |
七、开放封闭原则 1.代码中的接线板是什么? 2.编程价值观 – 沟通,简单,灵活 3.如何做到对扩展开放,对修改封闭 4.次时代租车服务终端 (ARCS) 的促销需求 5.笨拙的促销实现 6.如何不修改代码而改变它的行为 7.最简单的 OCP 实现 – 策略模式 8.前端代码重构:拆分复杂表达式 9.敏捷开发的精髓 – 只被第一颗子弹击中 | |
八、重构至模式训练营 – 用 Strategy 替换条件逻辑 1.核心重构方法:以多态取代条件表达式 2.关键重构方法:Move Method,Introduce Parameter, Extract Parameter, Replace Conditional with Polymorphism 3.演习:实战遗留代码重构 - 银行贷款计算模块 | |
Part5 – TDD开发流程 | |
九、TDD 核心技术 – mock 1.使用Mock对象进行交互测试 2.基于值的测试,基于状态的测试,基于交互的测试 3.Mock 和 Stub 的区别 4.手工 Mock 对象示例 5.同时使用 Mock 和 Stub 6.每个测试一个 Mock 对象 7.伪对象链:用 Stub 生成模 Mock 或其他 Stub 8.手工 Mock 对象和 Stub 的问题 | |
十、TDD 核心技术 – 隔离框架 1.隔离框架 2.为什么要使用隔离框架 3.动态生成伪对象 4.案例:用动态伪对象替换为手工伪对象 5.模拟值 6.测试事件监听与触发 7.隔离框架的优缺点 8.受限框架与非受限框架 9.演习:TDD实战 - 银行贷款计算模块 | |
Part6 – 使用AI进行结对编程 | |
十一、使用LLM进行结对编程提升开发效率 1.如何向 LLM描述需求 2.为什么要测试先行 3.让 LLM生成测试场景 4.对 LLM的反馈进行调整 5.指导 LLM生成单元测试 6.指导 LLM生成实现代码框架 7.让LLM根据需求生成业务代码 8.执行单元测试并提示LLM根据错误修正代码 9.添加更多的场景测试用例 10.演习:使用LLM创建命令行分析器的代码实现 |