课程简介
在快速迭代、高度竞争的开发环境中,整洁的代码和高效的系统架构是确保软件质量、可维护性和可扩展性的基石。本次课程针对如何编写可读性强、易于维护的整洁代码,以及如何运用系统架构模式构建高效、可扩展的软件系统进行了详细讲解,帮助开发者提升代码质量,优化系统架构,从而在快速迭代的开发环境中保持竞争力和可持续性。
本课程详细介绍了软件架构设计、微观设计原则、模块化设计、分布式系统构建、业务建模与设计模式等,并通过实战案例与重构训练,来提升学员的系统设计与开发能力。
课程收益
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 |
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员