4006-998-758
3000+课程任你选择
实战面向对象分析与设计
研发学院 实战面向对象分析与设计 开课时间:2022-07-06
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容

课程简介


本课程以使用领域建模以及符合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. 实战 - 任务分配执行系统 领域服务层构建


返回上一级