整洁代码与系统架构模式最佳实践
Owen Dai 查看讲师
百林哲咨询(北京)有限公司专家团队成员
现任职于某智能科技公司研发部总监、资深架构师,15年以上大型软件产品架构经验,负责带领团队研发计算机视觉、AI安防及大数据相关产品。擅长企业级系统架构,领域驱动设计,重构与模式。
浏览:306次
详情 DETAILS

课程简介

在快速迭代、高度竞争的开发环境中,整洁的代码和高效的系统架构是确保软件质量、可维护性和可扩展性的基石。本次课程针对如何编写可读性强、易于维护的整洁代码,以及如何运用系统架构模式构建高效、可扩展的软件系统进行了详细讲解帮助开发者提升代码质量,优化系统架构,从而在快速迭代的开发环境中保持竞争力和可持续性。

本课程详细介绍了软件架构设计、微观设计原则、模块化设计、分布式系统构建、业务建模与设计模式等,通过实战案例与重构训练,提升学员的系统设计与开发能力

课程收益

1、帮助学员深入理解架构原理,掌握分层架构、领域驱动架构等多种架构模式

2、帮助学员掌握掌握SOLID建模原则

3、帮助学员掌握应用服务和领域服务的概念和实现方法,提升模块化设计能力

4、帮助学员掌握掌握分布式系统构建与事务处理;

5、帮助学员熟练运用设计模式与重构技巧

受众人群

软件研发管理者、架构师,软件设计师、及其他对架构设计感兴趣的人员

课程周期

 2天(12H

课程大纲

标题

授课内容

一、架构 (第一天)

1. 认识分层架构

2. 分层架构的演化

3. DIP 依赖倒置原则

4. 领域驱动架构的演进

5. 界限上下文与架构

6. 六边形架构

7. 端口与适配器

8. 整洁架构

9. CQRS架构

10. CQRS中处理具有最终一致性的查询模型

二、微观设计 – 系统的对象化:SOLID 建模原则(第一天)

1. 单一职责原则 SRP

2. 案例:不符合 SRP 的设计 / 符合 SRP 的设计

3. 演习:在银行业务中,一个不符合SRP的账户管理系统的重构

4. 缺陷并提出重构方案。

5. 开放封闭原则 OCP

6. 案例:如何应对促销需求的变化

7. 里氏替换原则 LSP

8. 演习:银行账户管理系统,储蓄账户 (SavingsAccount) 和支票账户 (CheckingAccount) 的一种不符合 LSP的设计与重构

9. 案例:新产品的实现需求 -- 是继承还是组合

10. 接口隔离原则 ISP

11. 案例:如何做到两全其美

12. 演习:一个通用的 BankAccount 接口的设计重构

三、模块化微观设计- 应用服务(第一天)

1. 用例 (Use Case) 与应用服务

2. 微服务的网关 应用服务 之间的关系

3. 应用服务中的 编排,转换,验证,转发

4. 工作单元 (Unit of Work)

5. 数据传输对象 (Data Transfer Object)

6. 事务脚本 (Transaction Script) 与领域模型

7. 依赖注入在应用服务中的使用

8. 案例:实现应用服务

9. 应用服务的关注点

四、模块化微观设计 - 领域服务(第一天)

1. 领域服务的幂等性

2. 案例:实现领域服务

五、分布式系统构建块:事务处理(第一天)

1. 本地事务

2. 实现原子性和持久性

3. 实现隔离性

4. 全局事务

5. 共享事务

6. 分布式事务

7. CAP与ACID

8. 可靠事件队列

9. TCC 事务

10. SAGA 事务

六、业务建模与设计模式:创建型模式(第二天)

1. DI容器配置解析

2. 对象创建

3. 对象生命周期管理

4. 实战主题:实现自己的简易DI容器

5. 建造者模式为什么需要建造者模式

6. 案例1:可配置资源池

7. 实现方式

8. 与工厂模式的区别

9.  实战主题:HTTP 管道处理中间件

七、业务建模与设计模式:结构型模式(第二天)

1. 代理模式的原理解析

2. 案例1:代理类 UserControllerProxy 和原始类 UserController

3. 动态代理的原理解析

4. 基于接口的动态代理

5. 基于继承的动态代理

6. 案例2:SpringAOP 底层动态代理机制

7. 实战主题:使用代理模式实现简单RPC框架

8. 装饰器模式

9. 案例1:Java IO 类的“奇怪”用法

10. 关键点1:装饰器类和原始类继承同样的父类

11. 关键点2:装饰器类是对功能的增强

12. 实战主题:商品促销引擎设计

13. 组合模式

14. 组合模式的原理与实现

15. 案例1:电商产品搜索条件接口

八、业务建模与设计模式:行为型模式(第二天)

1. 观察者模式

2. 案例1:经典的观察者实现

3. 基于不同应用场景的不同实现方式

4. 同步阻塞的实现方式

5. 异步非阻塞的实现方式

6. 案例2:异步非阻塞观察者模式的简易实现

7. 基于 Thread vs 基于 Executor

8. 进程内的实现方式

9. 跨进程的实现方式

10. 实战主题:EventBus 框架

11. 关键数据结构 Observer 注册表的实现

12. Java 的反射语法来动态地创建对象、执行函数

13. 策略模式策略模式的原理与实现

14. 如何利用策略模式避免分支判断?

15. 案例1:银行贷款计算模块的策略化重构

16. 实战主题:根据文件大小进行排序策略选择程序

17. 状态模式什么是有限状态机?

18. 案例1:状态机实现方式一:分支逻辑法

19. 案例2:状态机实现方式二:查表法

20. 案例3:状态机实现方式三:状态模式

21.  实战主题:电梯按钮

九、重构至模式训练营1 – 用 Strategy 替换条件逻辑(第二天)

1. 核心重构方法:以多态取代条件表达式

2. 实战:遗留代码重构 - 银行贷款计算模块

3. 关键重构方法:Move Method,Introduce Parameter, Extract Parameter, Replace Conditional with Polymorphism

十、重构至模式训练营2 – 用 State 替换状态改变条件语句(第二天)

1. 如何设计电梯按钮的后台逻辑

2. 该从什么角度考虑问题:行为还是对象

3. 实战:遗留代码重构 – 权限判断模块

4. 关键重构方法:Replace Code with Class, Extract Sub-Class,Move Method,Encapsulate Field



企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1