中培企业IT培训 400-626-7377 400-626-7377
软件设计模式与软件重构实战训练营

你是否遇到过这样的场景

一课带你实战软件设计及重构,从根源上解决问题

为什么需要学习软件设计?

提高软件开发效率

提高软件开发效率

在编码之前制定设计方案,避免在开发过程中频繁修改代码,提高软件开发效率

提高软件质量

提高软件质量

编码之前进行全面的需求分析和规划,从而设计出更加优秀的软件架构和模块设计,提高软件的质量和可靠性

方便软件维护和升级

方便软件维护和升级

设计出易于维护和升级的软件系统,减少维护成本和升级难度

减少软件开发成本

减少软件开发成本

在开发过程中发现问题和缺陷,避免在后期进行大量的修改和调整,从而减少软件开发成本

为什么软件需要重构?

以真实案例为切入点,全面掌握软件设计及重构

什么是高质量的软件设计 详细讲解软件设计原则 软件设计模式理论讲解与应用案例 剖析软件质量不断下降的根源 高质量的软件设计过程 如何进行软件重构
  • ① 软件的质量保证:内部质量与外部质量
  • ② 高质量软件设计的标准:易读、易于维护、易于变更
  • ① 领域驱动设计
  • ② 案例讲解软件设计原则:低耦合、高内聚
  • ③ 探讨软件设计模式:由来、发展及对高质量软件的作用
  • ① 适配器模式
  • ② 策略模式
  • ③ 工厂模式
  • ④ 单例模式
  • ⑤ 原型模式
  • ⑥ 模板方法模式
  • ⑦ 装饰者模式
  • ⑧ 桥接模式
  • ⑨ 享元模式
  • ⑩ 其它设计模式

  • 观察者模式
    代理模式
    命令模式
    外观模式
    构建器模式
    组合模式
    中介者模式
    迭代器模式
  • ① 质量不断下降的表现及根源
  • ② 案例分析:一个遗留系统的演化过程
  • ① 案例讲解软件设计原则
  • ② 小步快跑模式的开发过程
  • ① 软件重构的概念
  • ② 关于重构的讨论
  • ③ 案例分析:重构一个大型遗留系统
  • ④ 案例:智能温控器分析设计过程(嵌入式+物联网)
点击获取课程资料

理论+实战,系统进阶高级工程师

适合人群

点击咨询课程价格

软件设计模式与软件重构实战课程大纲

第1-2天 软件设计模式授课内容 第2-4天 软件重构实战授课内容

第一部分 高质量软件设计

第一章 什么是高质量的软件设计 第二章 软件设计原则

第二部分 软件设计模式

第三章 适配器模式 第四章 策略模式 第五章 工厂模式 第六章 单例模式 第七章 原型模式 第八章 模板方法模式 第九章 装饰者模式 第十章 桥接模式 第十一章 享元模式 第十二章 其它设计模式

情景剧:软件设计焦虑症
1.上次的设计太糟糕了,痛下决心以后要好好设计
2.再次进行软件设计时却不知道该怎样设计
探讨:如何进行高质量的软件设计 什么是高质量的软件设计
1.软件的质量保证:内部质量与外部质量
2.高质量软件设计的标准:易读、易于维护、易于变更

易于阅读
1.规范代码、编写注释与表明动机
案例:代码编写范例与简便易行的方法
2.领域驱动设计
易于维护与变更
1.互联网+带来的挑战
2.案例讲解软件设计原则
探讨软件设计模式

什么是适配器模式
1.软件设计中外部接口的难题
2.第三方框架带来的设计难题
3.适配器模式及其概念
适配器模式的应用 1.适配器模式解决第三方框架带来的难题
案例:Hibernate适配器的设计
2.适配器模式解决外部接口的设计难题
案例:第三方支付接口的设计
案例:财务数据接口的设计

什么是策略模式 1.工资发放功能遇到的难题
2.策略模式及其概念
策略模式的应用
1.案例:工资发放功能设计改进的过程
2.案例:数据导出功能的设计实现
3.案例:财务凭证生成功能的设计过程
练习:财务凭证生成功能的设计与实现

探讨软件设计中遇到的难题 1.依赖反转原则的设计难题
2.开放-封闭原则的设计难题
3.探讨工厂模式的本质
简单工厂模式
1.简单工厂模式的C++实现
2.基于配置的简单工厂模式
3.剖析简单工厂如何实现依赖反转原则
案例:剖析Spring的beanFactory
4.解读工厂模式对设计的重大意义
5.讲解如何创建一个工厂
案例:数据导出功能的工厂实现
工厂方法模式 1.工厂方法模式的概念
2.工厂方法模式的应用
案例:SAX框架的工厂类设计
抽象工厂模式 1.抽象工厂模式的概念
2.抽象工厂模式的实现
案例:标签库的设计改进过程

什么是单例模式 1.设计工厂类面临的问题
2.单例模式及其概念
3.如何实现单例模式
单例模式的应用 1.单例模式带来的设计变革
2.单例模式改变了很多软件的设计

什么是原型模式
1.工厂类在提供产品时遇到的设计问题
2.原型模式及其概念
原型模式的设计实现 案例:函数调用的无副作用问题
案例:JavaScript中的原型模式

什么是模板方法模式 1.煮咖啡给我们的启示
2.设计工厂类的新思路
3.模板方法模式及其概念
模板方法模式的作用与技巧
案例:一个工厂模板的设计与实现
深入理解不要重复自己原则
1.重复代码带来的严重后果
2.散弹式修改及其解决思路
3.探讨实现代码复用的难题
4.代码复用在不同场合采用的方法
5.模板方法模式在代码复用中的作用

什么是装饰者模式
1.业务量增长带来的多数据源问题
2.运用装饰者模式巧妙解决多数据源问题
3.装饰者模式及其概念
装饰者模式的应用
案例:多数据源的设计实现
1.多数据源问题的分析设计过程
2.多数据源的设计与实现
案例:商城收银系统的设计变更过程
1.商城收银系统期初的设计
2.混合策略的设计与实现
3.多层装饰者的设计与实现
重新理解里氏替换原则
1.透明的功能扩展
2.里氏替换原则
练习:商场收银系统的2种设计与实现

什么是桥接模式
1.对象继承的泛滥
2.桥接模式及其概念
桥接模式的应用
案例:员工管理与工资发放的设计
1.员工管理与工资发放带来的继承泛滥问题
2.采用桥接模式的设计与实现
案例:查询支持类的设计
1.查询支持类遭遇的继承泛滥问题
2.查询支持类的解决方案
3.单例模式下查询支持类的设计
深入体会单一职责原则

什么是享元模式
1.Hibernate是怎样访问数据的
2.享元模式及其概念
享元模式的应用
案例:数据缓存的设计实现
案例:享元模式在大数据中的应用

观察者模式:JobHunter的情景剧
代理模式:老板与秘书的差异
命令模式:像工作流一样处理业务
外观模式:超级家庭影院的烦恼
构建器模式:SQL Builder的设计
组合模式:如何构建一棵树
中介者模式:QQ在沟通中的作用
迭代器模式:如何顺序访问一个集合

第一部分 为什么软件需要及时重构

第一单元 剖析软件质量不断下降的根源 第二单元 高质量的软件设计过程

第二部分 如何进行软件重构

第三单元 何为重构 第四单元 关于重构的讨论

质量不断下降的表现:
1.程序代码越来越乱
2.软件维护成本越来越高
3.软件变更越来越困难
4.无法进行新技术的改造
以往采取的措施:
1.头痛医头,脚痛医脚
2.抛弃掉重新编写
3.因担心未来变化而做的过度设计
带来的问题
1.团队成员越来越多但效率却越来越低
2.测试变得越来越困难而任务繁重
3.软件系统越来越笨重而不适应未来变化
分析与反思
案例分析:一个遗留系统的演化过程
1.起初的设计
2.随后的变更
3.质量不断下降的过程
软件质量下降的根源:
1.软件总是因变更而变得越来越复杂
2.软件结构已经不再适应复杂的软件需求
3.必须要调整软件结构以适应新的软件需求
软件是因需求变更而质量下降吗?
案例分析:推演软件变更的设计过程
应对软件变更的最佳方式:两顶帽子
1.重构原有代码以适应新的需求
2.实现新的需求
案例:演示两顶帽子的设计过程
案例:财务凭证生成程序的设计过程

案例讲解软件设计原则
1.低耦合
2.高内聚
以往软件设计的过程: 3.演示以往软件设计的过程
4.剖析以往软件设计的问题与风险
小步快跑模式的开发过程:
1.用最快的速度开发一个最核心的功能
2.让第一个版本运行起来并可以验证
3.在第一个版本的基础上不断添加功能
案例:演示小步快跑的开发过程
小步快跑解决的问题: 1.复杂功能有效地解耦
2.代码编写总是可测试与验证
3.简化设计与思考的复杂度
4.适时重构以避免软件退化
案例:数据推送程序的设计过程

软件重构的概念 1.重构是一系列代码的等量变换
案例:一个Hello World重构过程
2.重构的保险索:自动化测试
案例:Hello World的自动化测试过程
3.软件修改的四种动机——重构的价值
4.一个真实的谎言——重构的误区
5.重构的主要方法与技巧
案例分析:重构一个大型遗留系统
1.重构第一步:分解大函数
超级大函数及其危害
案例:演示大函数产生的过程
案例:演示抽取方法操作步骤
实践抽取方法会遇到的问题和解决方案
2.重构第二步:拆分大对象
超级大对象及其危害
案例:演示超级大对象的产生过程
案例:演示抽取类的操作步骤
讲解单一职责设计原则
案例:演示“分久必合,合久必分”的重构过程
3.重构第三步:提高复用率
讲解顺序编程及其危害
“不要重复代码”原则
案例:提高代码复用的6个方法
案例:演示新增代码时的代码复用过程
用静态检查工具检查重复代码
4.重构第四步:可扩展设计
过度设计 vs. 恰如其分的设计
讲解“开放-封闭”的设计原则
案例:讲解可扩展设计的4个方法
案例:讲解新增代码的可扩展设计过程
5.重构第五步:降低耦合度
案例:讲解接口、实现与工厂模式
案例:讲解外部接口解耦与适配器模式
6.重构第六步:系统分层
反思软件架构需要怎样的分层结构
遗留系统如何拥抱需求变化
遗留系统如何应对技术变革
7.重构第七步:领域驱动设计
领域驱动设计的概念
讲解领域模型分析方法
案例:智能温控器分析设计过程(嵌入式+物联网)
练习:重构一个小程序并编写测试脚本

什么时候重构
1.重构是一种习惯
2.重构让程序可读
3.重构,才好复用
4.先重构,再扩展
5.紧急任务时的重构
测试的困境 1.重构初期的困局
2.解耦与自动化测试
3.建立自动化测试体系
重构的评价
1.评价软件质量的指标
2.评价软件质量的工具