课程简介
本课程以使用领域建模以及符合DDD的分层架构,阐述如何将系统从过程式的堆叠改善为对象模型式的交互。并在各个层级及模块中,展示模式及最佳实现的用法及技巧。
课程时长
2 天(6小时/天)
课程特点
通过定义OOA&D的每个步骤,引导学员实现写出优秀软件的目标。
课程对象
具有以下经验的 架构师,后端开发工程师,以及其他软件从业人员
● 具有基础的架构设计知识
● 至少掌握一门面向对象语言
● 具有基本的面向对象程序设计能力
● 具有一年或一年以上的业务系统开发经验
课程大纲
一、 流程建模 vs 领域建模 1. “修改Order中Product的数量”的业务需求 2. 业务逻辑模式 3. 事务脚本详解 4. 表模块详解 5. 活动记录详解 6. 领域模型详解 7. 演习 对象思维与建模 8. 基于 Service + Bean的实现 9. 基于事务脚本的实现 10. 基于领域对象的实现 11. 演习 餐饮管理系统 Step1 12. 界限上下文 13. 领域概念的“二义性” 14. 演习 美团外卖的领域建模 | |
二、 极简 UML 1. UML的主要版本及工具 2. 草稿模式 /蓝本模式 /编程语言模式 3. UML图层次结构 4. 用例图 5. 类图 6. 顺序图 7. 演习 走廊电梯按钮的后台逻辑实现 | |
三、 SOLID建模原则 1. 单一职责原则 2. 次时代租车服务终端 (ARCS) 的初步设计 3. 用例 (UseCase) 的作用 – 划分边界及概览 4. SRP 的设计误区 5. 重构至 SRP 的方法1:提取类 6. 重构至 SRP 的方法2:Proxy 模式 7. 前端代码 SRP 重构:投票组件 8. 过程性代码的 SRP 9. 开放封闭原则 10. 代码中的接线板是什么? 11. 次时代租车服务终端 (ARCS) 的促销需求 12. 笨拙的促销实现 13. 最简单的 OCP 实现 – 策略模式 14. 前端代码重构:拆分复杂表达式 15. 敏捷开发的精髓 – 只被第一颗子弹击中 16. 里氏替换原则 17. 什么才是好的继承关系 18. 次时代租车服务终端 (ARCS) 的新需求 – 电动轿车费用计算 19. IS-A 的精髓:针对属性还是针对行为 20. 契约式设计继承体系 21. 重构方法:提升为兄弟类 22. 前端代码重构:抽取函数 23. 如何才能让 次时代租车服务终端 (ARCS) 的代码符合 LSP 24. 这样做我们可能会引入什么新的问题? 25. 接口隔离原则 26. 接口“变胖”的问题 – 接口污染 27. 佳能一体机的遗留接口问题 28. 如何实现接口分离 – 适配器模式 29. 类适配器 – 多继承 30. 对象适配器 – 委托 31. 使用单元测试来发现问题 32. 前端代码重构:使用模板方法重新组织逻辑 33. 次时代租车服务终端 (ARCS) 在接口划分上的问题 34. 如何简化复杂的逻辑 35. 如何使用模板方法分离抽象与具体 36. 案例:ATM机接口设计的演化 37. 依赖倒置原则 38. 结构化设计理念的问题 39. 对象化设计理念 40. 依赖倒置到底倒置了什么 41. 如何分离关注点 42. DI-依赖注入解决的问题:讲对象的创建与使用分离 43. 案例:消息队列设计的演化 | |
四、 设计与模式 1. 演习 将需求转化为模型 2. 使用委托抽取及组合概念模型 3. 使用多态演化系统 4. 使用双封装添加扩展性 5. 演习 电商产品查询问题 6. 组合模式的应用 7. 解释器模式的应用 | |
五、 分层建模与架构 1. 实体 – 数据容器还是行为载体 2. 贫血模型 3. 如何避免贫血,实体与领域服务之间的分寸 4. 唯一标识 5. 委派标识 6. 案例:实现实体层超类型(Layer Supertype) 7. 实战 -任务分配执行系统 实体行为归属甄别 8. 值对象 – 性能提升小帮手 9. 什么是值对象 10. 值对象的特征 11. 为什么值对象这么容易被忽略 12. 案例:地址建模与值对象 13. 案例:实现值对象层超类型 14. 聚合 – 比类更高一层的封装 15. 聚合设计原则 16. 聚合设计的过程 17. 聚合的一致性边界 18. 一个事务中只处理一个聚合 19. UML 中的聚合 与 DDD 中的聚合 20. 聚合内实现事务一致性 21. 微服务的入口 - 应用服务 22. 用例 (Use Case) 与应用服务 23. 微服务的网关 与 应用服务 之间的关系 24. 应用服务中的 编排,转换,验证,转发 25. 工作单元 (Unit of Work) 26. 数据传输对象 (Data Transfer Object) 27. 事务脚本 (Transaction Script) 与领域模型 28. 依赖注入在应用服务中的使用 29. 案例:实现应用服务 30. 应用服务的关注点 31. 实战 - 任务分配执行系统 应用层构建 32. 领域服务 – 不是实体本身的行为都归它 33. 领域服务的幂等性 34. 案例:实现领域服务 35. 实战 - 任务分配执行系统 领域服务层构建 |