课程大纲
第一篇:设计模式-设计原理与面向对象设计思维 | ||
主题 | 培训内容 | 备注 |
第1单元 为什么需要设计模式
| 内容一:软件设计模式---模式到底是什么?价值在哪里? 1. 什么是模式 2. 为什么需要设计模式? 难道就为了面试吗? 3. 设计模式能够给我们带来什么? 4. 设计模式学习面临的困难和解决思路 5. 从了解模式到正确应用模式 练习---某电信业务系统,在使用模式前解决方案 和 使用模式后的对比
内容二:软件设计模式本质—你真的知道模式背后的原理吗? 1. 发现变化进行封装变化 2. 把变化与不变必须分离 3. 针对接口的编程,而不是针对实现 4. 组合优于继承 练习—某电信认证项目设计分析,分析模式背后的本质
内容三:什么是好的设计-----难道使用设计模式就是好的设计吗? 1. 什么是好的设计? 2. 难道不使用设计模式就是坏的设计吗? 3. 为什么需求变化总是使你痛苦? 和你的设计有关系吗? 4. 好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。 5. 设计模式可以使你的设计更灵活,更易复用,更具可扩展性 练习—某电信项目4种设计方案的对比, 那种更合适?多种方案的对比 | |
第2单元 面向对象设计思维与原理
| 内容一:面向对象思维是模式基础 1. 面向对象分析与设计的本质 2. 面向对象设计思维与面向过程设计思维—职责驱动设计 3. 抽象本质 4. 封装本质 5. 继承本质 6. 多态本质 7. 面向对象常见的错误认识—思考OO带来的价值 8. 为什么学习设计模式需要面向对象思维 9. 从面向对象到模式到再到真正的面向对象 10. 练习—某ERP项目, 使用面向对象设计和过程化设计 PK,,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 !
内容二:面向对象设计原则(principles) 1. 依赖倒置原则(DIP) 2. 开放封闭原则(OCP) 3. 单一职责原则(SRP) 4. Liskov 替换原则(LSP) 5. 接口隔离原则(ISP) 6. 练习—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 | |
第二篇:设计模式精讲------创建型 | ||
第3单元 创建型模式
| 内容一:创建型模式(principles) 1. 简单创建型工厂 2. Factory Method(工厂方法) 3. Abstract Factory(抽象工厂) 4. Builder(生成器) 5. Prototype(原型) 6. Singleton(单件) 7. 创建型模式的讨论 | |
第4单元 创建型模式精讲
| 内容一:简单工厂模式 1. 简单工厂模式概述 2. 简单工厂模式结构与实现 3. 简单工厂模式结构 4. 简单工厂模式实现 5. 简单工厂模式应用实例 6. 关于创建对象与使用对象 7. 简单工厂模式的简化 8. 简单工厂模式优/缺点与适用环境 9. 简单工厂模式优点
内容二:工厂方法模式 1. 工厂方法模式概述 2. 工厂方法模式结构与实现 3. 工厂方法模式结构 4. 工厂方法模式实现 5. 工厂方法模式应用实例 6. 工厂方法模式优/缺点与适用环境 7. 工厂方法模式优点
内容三:抽象工厂模式 1. 产品等级结构与产品族 2. 抽象工厂模式概述 3. 抽象工厂模式结构与实现 4. 抽象工厂模式结构 5. 抽象工厂模式实现 6. 抽象工厂模式应用实例
内容四:单例模式模式 1. 单例模式概述 2. 单例模式结构与实现 3. 单例模式结构 4. 单例模式实现 5. 单例模式应用实例 6. 饿汉式单例与懒汉式单例 7. 单例模式优/缺点与适用环境 8. 单例模式优点
内容五:其他创建型模式 1. Builder(生成器)模式概述 2. Builder(生成器)模式结构与实现 3. Prototype(原型)模式概述 4. Prototype(原型)式结构与实现
内容六:创建型模式的应用案例分析 1. 创建型的应用案例分析 | |
第三篇:设计模式精讲------结构性型 | ||
第5单元 结构型模式
| 内容一:结构型模式(principles) 1. Adapter(适配器)—类对象结构型模式 2. Bridge(桥接)—对象结构型模式 3. Composite(组成)—对象结构型模式 4. Decorator(装饰)—对象结构型模式 5. FACADE(外观)—对象结构型模式 6. Flyweight(享元)—对象结构型模式 7. Proxy(代理)—对象结构型模式 8. 结构型模式的讨论 9. Adapter与Bridge对比与分析 10. Composite、Decorator与Proxy 对比与分析 | |
第6单元 结构型模式精讲
| 内容一:适配器模式 1. 适配器模式概述 2. 对象适配器和类适配器 3. 适配器模式结构与实现 4. 适配器模式应用实例 5. 缺省适配器模式 6. 双向适配器 7. 适配器模式优/缺点与适用环境
内容二:组合模式 1. 组合模式概述 2. 组合模式结构与实现 3. 组合模式应用实例 4. 透明组合模式与安全组合模式 5. 组合模式优/缺点与适用环境 6. 组合模式优点 7. 组合模式缺点 8. 组合模式适用环境
内容三:装饰器模式 1. 装饰模式概述 2. 装饰模式结构与实现 3. 装饰模式应用实例 4. 透明装饰模式与半透明装饰模式 5. 装饰模式优/缺点与适用环境
内容四:Facde外观模式 1. 外观模式概述 2. 外观模式结构与实现 3. 外观模式应用实例 4. 抽象外观类 5. 外观模式优/缺点与适用环境 6. 外观模式适用环境
内容五:结构性模式应用案例 1. 结构型概述应用案例 | |
第四篇:设计模式精讲------行为型 | ||
第7单元 行为型型模式
| 内容一:行为型模式(principles) 1. CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 2. COMMAND(命令)—对象行为型模式 3. INTERPRETER(解释器)—类行为型模式 4. ITERATOR(迭代器)—对象行为型模式 5. MEDIATOR(中介者)—对象行为型模式 6. MEMENTO(备忘录)—对象行为型模式 7. OBSERVER(观察者)—对象行为型模式 8. STATE(状态)—对象行为型模式 9. STRATEGY(策略)—对象行为型模式 10. TEMPLATE METHOD(模板方法)—类行为型模式 11. VISITOR(访问者)—对象行为型 模式 12. 行为模式的讨论 | |
第8单元 行为型模式精讲
| 内容一:代理模式 1. 代理模式概述 2. 代理模式结构与实现 3. 代理模式应用实例 4. 远程代理 5. 虚拟代理 6. Java动态代理实现 7. 代理模式优/缺点与适用环境
内容二:职责链模式 1. 职责链模式概述 2. 职责链模式结构与实现 3. 职责链模式应用实例 4. 纯与不纯的职责链模式 5. 职责链模式优/缺点与适用环境
内容三:命令模式 1. 命令模式概述 2. 命令模式结构与实现 3. 命令模式结构 4. 命令模式实现 5. 命令模式应用实例 6. 实现命令队列 7. 记录请求日志 8. 实现撤销操作 9. 宏命令 10. 命令模式优/缺点与适用环境
内容四:观察者模式 1. 观察者模式概述 2. 观察者模式结构与实现 3. 观察者模式应用实例 4. JDK对观察者模式的支持 5. 观察者模式与Java事件处理 6. 观察者模式与MVC 7. 观察者模式优/缺点与适用环境
内容五:状态与策略模式 1. 状态模式概述 2. 状态模式结构与实现 3. 状态模式应用实例 4. 共享状态 5. 使用环境类实现状态转换 6. 状态模式优/缺点与适用环境 7. 策略模式概述 8. 策略模式结构与实现 9. 策略模式应用实例 10. 策略模式优/缺点与适用环境
内容六:模板方法模式 1. 模板方法模式概述 2. 模板方法模式结构与实现 3. 模板方法模式应用实例 4. 钩子方法的使用 5. 模板方法模式优/缺点与适用环境 | |
第五篇:设计模式对比 | ||
第9单元 设计模式对比
| 内容一:模式大PK, 通过对比了解设计模式的细节 1. 创建型模式讨论 a) 简单工场 工厂方法 抽象工场 b) Abstract Factory,builder,Prototype 模式 c) 单例模式 2. 行为型模式 a) Adapter与Bridge b) Composite、Decorator与Proxy c) Façade模式 与 Adapter模式 /Proxy模式 d) Composite 与Iterator模式 3. 结构型模式 a) 封装变化-Strategy/State/ Iterator模式 b) 封装结构---Mediator模式与Facade模式 c) 对象作为参数-- Visitor/Command/Mementor d) 通信应该被封装还是被分布- Mediator和Observer e) 对发送者和接收者解耦-Command模式与职责链模式
将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法。 | |
第六篇:设计模式应用案例 | ||
第10单元 设计模式应用案例
| 内容一:用模式思考系统设计 1. 基于模式的设计系统 2. 用模式思考的过程 3. 模式的应用层次和组合应用模式 4. 基于模式的方法和步骤
内容二:练习案例- Log子系统的设计 1. 介绍项目需求情况,进行设计 2. 通过重构逐步实现设计模式 3. Framework 设计思想—好莱坞原则 4. 学习设计模式(Factory Method, Template Method, Composite, Chain of Responsibility ) | |
第11单元 设计模式应用策略 有时放弃模式更值得学习 | 内容一:模式案例–XXXX缓存系统 1. 项目系统背景和需求 2. 缓存任何对象,任何java对象都可以缓存。 3. 拥有全面的API--给你全面的程序来控制所有的缓存的特性。 4. 永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。 5. 支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。 6. 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。 7. 系统的设计思考过程 8. 展示如何用模式,进行设计 9. 学习设计模式() | |
第七篇:重构到设计模式 | ||
第12单元 重构到模式应用案例
通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。 | 内容一:重构到模式- 1. 设计坏味道概述 2. 重构思想 3. 理解如何结合重构和模式; 4. 用模式导向的重构(pattern-directed refactoring)改善既有代码的设计; 5. 找出需要进行模式导向重构的代码段; 6. 了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。 7. 一组坏味 (也就是问题),表示需要进行模式导向的重构; 8. 实现同一模式的不同方式的示例; 9. 什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。 10. 常见设计模式的重构演化的过程 练习—通过一个大型电信系统案例分析, 解决如何通过重构引入设计模式
内容二:案例- 遗留系统如何使用设计模式 1. 拒绝退化—“首先不要伤害” 2. 关注点分离 3. 通过案例分析,如何修改遗留代码,而不破坏现有系统代码结构,引入设计模式 练习—通过一个系统案例分析, 如何在维护遗留系统时, 通过分离制作, 关注点分离, 实现对遗留系统不伤害,从而引入设计模式
内容三:练习案例- 重构到模式 | |
第13单元 设计模式应用策略- 综合应用分析 | 内容一:大型系统的设计案例分析, 介绍如何预先应用模式,以及如何在第3版本重构时导入模式, 已经在后期维护时应用模式 1. ××某省移动线路资源维护系统的背景介绍 2. 系统需求分析 3. 如何根据应用系统特点, 和变化与不变等原因,引入模式 4. 根据应用功能,导入设计模式 5. 第1版本上线时的系统设计分析 6. 第1版本,系统设计时遗留的问题, 设计不足, 缺陷等分析 7. 第2版本, 由于增加新功能导致的严重问题分析 8. 系统出现很多设计不足 9. 第3版本, 由于增加新功能导致的严重问题分析 10. 系统开始引入重构,系统的坏味道, 以及重构,分析在重构是如何使用重构 11. 分析第4版本的系统设计 12. 系统在后续维护过程之中的, 设计情况。 以及如何在维护时期进行应用模式 | |
第八篇:软件架构核心原理和设计过程 | ||
第1单元:软件架构文档和架构视图-如何有效描述架构蓝图
| 内容一:软件架构的视图 11. 软件架构的视图原理 12. 软件架构视图的意义, 软件架构师的多维思考 13. 逻辑视图、开发视图、部署视图、运行视图、场景视图,数据视图 ,实现视图 14. 如何和怎样绘制软件架构视图 15. UML建模工具在架构视图的应用 16. 典型案例分析:结合多个电信,金融行业项目案例,分析真实项目软件架构视图
内容二: 软件架构的文档编写 1. 软件架构文档的意义 2. 软件架构模板(根据实际项目情况选择合适内容) 3. 软件架构文档的结构(避免出现不必要的重复和缺少关键信息) 4. 软件架构文档必须包含的内容(通过多个项目,分析不同系统包含系统内容不同) 5. 文档的后期管理(使文档保持更新) 6. 软件架构文档的评审 7. 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 8. 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 | |
第2单元:软件架构设计关注点(哪些因素驱动架构设计,是架构开始设计之前必须知道的?)和架构最佳策略 | 内容一:软件架构设计关注点(软件架构师在架构设计之前必须考虑的要素) 1. 架构设计的关注是什么 2. 软件架构的驱动因素(改变传统以功能实现和新技术为驱动的策略) 3. 软件质量需求对架构的影响(质量属性场景定义和对应架构策略) 4. 软件功能需求对架构的影响(分析功能需求变化点和进化点) 5. 软件约束条件与架构的影响(业务,运行环境,开发团队,实现技术等约束) 6. 如何使功能性需求,非功能性需求和平台细节在架构中能保持分离,从而改善可维护性和可扩展性 7. 处理功能需求,非功能性需求,平台细节.制定架构目标 8. 典型案例分析:结合项目,因为分析驱动因素的错误,导致项目不能如期验收的失败案例
内容二:软件架构最佳策略 1. 重新认识系统质量属性,如何定义质量属性和相应的架构策略 2. 系统架构的可扩展性设计策略 3. 系统架构的可靠性设计策略 4. 系统架构的高性能设计策略 5. 系统架构的可维护性设计策略 6. 系统架构的易用性设计策略 7. 系统架构质量属性和架构模式的应用 8. 通过分析案例,了解基本架构策略如何应用 | |
第3单元:软件架构设计过程
| 内容一、软件架构设计过程 1. 软件架构设计过程方法论(步骤和相应的成果) 2. 软件系统边界和外部系统接口的定义 3. 大型软件系统的划分子系统原则 4. 子系统功能模块的分解 5. 子系统间的通信接口的设计 6. 如何应对系统内部紧耦合、高内聚 7. 软件系统关键质量属性树和可行性分析 8. 软件系统部署架构(分布式/数据分布/通信/安全) 9. 软件系统部署容量评估(主机/中间件/数据库等资源容量评估) 10. 应用系统的类型和架构风格 11. 架构模式在实际项目的应用 12. 软件架构立方体图(软件架构的分层,分区和基础服务) 13. 软件架构通用机制的分析(如何处理基础设施扩展和具体有什么方法做基础设施扩展, 掌握如何分离这些基础设施用例) 14. 使用质量场景属性进行迭代架构设计 15. 软件架构各层的架构策略(针对企业应用分层,每层的架构策略) 16. 软件系统线程架构策略 17. 数据架构(数据模型/数据分布/数据存取,以及核心数据流) 18. 用例视图(抽取典型,有分险和客户最关心用例进行分析,结合架构进行设计) 19. 实现视图(架构,设计和开发,实现原则和指南) 20. 完成架构文档,对架构文档进行评估 21. 典型案例分析 | |
第4单元:软件架构应用 | 内容一、架构设计的评估和验证 1. 软件架构的验证(软件架构风险验证) 2. 软件架构的验证方法和指标(基于问题检查表和质量属性树) 3. 软件架构的验证注意事项 4. 软件架构的评估方式 5. 软件详细设计和实现时期,架构师的职责和架构的监控 6. 典型案例分析:结合项目实例,分析如何进行验证架构和架构设计的后期重构技巧
内容二、架构设计重构和复用(架构复用) 1. 软件架构重构概述 2. 软件架构常见的坏症状 3. 软件架构的重构手段 4. 软件架构的复用 5. 结合某著名公司全球架构师团队架构实例,分析架构重构和架构复用技巧 | |
第九篇:软件架构分层架构和每层核心策略 | ||
第5单元:软件架构核心策略 | 内容一:领域模型层架构 1. 领域模型架构策略 2. 领域模型建模(关联,属性) 3. 多个系统数据模型不一致和领域模型的同步 4. 公共数据模型(CDM) 5. 领域模型分析模式(模型的选择会影响最终产生系统的灵活性和可重用性) 6. 根据电信计费系统和网络资源管理案例分析领域模型的架构
内容二:业务逻辑层 1. 业务逻辑架构模式(事务脚本/领域模型/服务层模式) 2. 业务流程架构策略 3. 基于容器的业务逻辑架构 4. 面向方面的业务架构和AOP技术在业务逻辑架构的应用 5. 状态管理架构策略(有状态和无状态服务,以及对可扩展性的影响) 6. 业务逻辑的分布式架构策略(远程或本地/同步或异步) 7. 并发和同步架构模式 8. 基于中间件的业务逻辑架构 9. 典型案例分析:结合某银行交易系统分析业务逻辑架构
内容三:数据存取(持久性)层架构 1. 数据存取架构策略(对象和关系数据库的映射) 2. 缓存技术在存取层的应用/缓存数据和数据库数据一致性 3. 分布式数据存取策略(读写分离/分布数据/异构数据存取) 4. 数据同步和一致性策略 5. 数据访问层的性能考虑 6. 事务管理(本地事务和分布式事务,以及事务补偿) 7. 数据锁管理(悲观锁和乐观锁) 8. 典型案例分析:结合零售行业项目分析数据访问层的架构设计
内容四:数据架构 1. 数据架构概述 2. 数据建模原则和优化策略 3. 数据复制和同步策略 4. 数据一致性和分布式事务 5. 大数据量数据库可扩展性(水平和垂直扩展,读写分离)以及单表记录过大拆分策略 6. 数据库集群规划 7. 分布式数据存取策略(跨多个库, 可能数据库异构类型) 8. 数据备份与恢复 9. 数据库性能规划 10. 数据安全策略 11. 与遗留系统的数据库兼容性考虑 12. 结合电信,金融,零售项目实例分析,系统数据架构设计策略
内容五:系统基础服务组件架构 1. 系统基础服务组件架构策略 2. 系统通用服务层与业务逻辑分离 3. 系统必备13种基础服务架构(异常处理/事务管理/缓存/工作流/校验/通信/安全/日志/定时触发/状态/消息通信/系统监控/配置管理) 4. 业务通用服务架构实现策略 5. 结合多个项目实例分析,架构师如何萃取基础服务组件和怎样设计实现 | |
第十篇:大型高可用高并发分布式系统架构设计与实践 | ||
第6单元 大型分布式架构设计最佳实践 | 内容一:大型分布式架构核心概念 1. 无状态化设计; 2. 冗余设计; 3. 负载均衡设计; 4. 分级管理设计; 5. 纯异步调用(状态机等方式)设计; 6. 调用合理超时设计; 7. 服务降级设计; 8. 幂等设计; 9. 我们的实践案例;
内容二:大型分布式系统服务降级设计与实践 1. 服务限流降级概念; 2. 服务限流降级使用业务场景; 3. 服务限流降级设计环节; 4. 服务限流降级之原则篇、架构篇、框架篇、业务篇; 5. 移动时代服务限流降级如何打造; 6. 我们的实践案例;
内容三:大型分布式系统缓存设计与实践 1. 互联网使用缓存类型有哪些?各自作用是什么? 2. 分布式缓存冗余如何设计? 3. 高可用架构缓存一致性如何保证? 4. 高可用架构缓存高性能如何保证? 5. 我们的实践案例; 6. 缓存系统在大型网站架构中发挥的作用 7. 单机缓存系统自研与选型 8. Memcached与Redis的异同及应用场景 9. 深入剖析Redis技术 10. Redis主要数据结构剖析 11. Redis性能优化及配置优化 12. Redis复制机制与持久化机制 13. Redis缺陷与陷阱 14. 分布式缓存技术剖析 15. 扩展Redis集群,如何实现集群弹性伸缩,无缝扩容 16. Redis Cluster官方集群扩展方案及缺陷 业界主流Redis集群方案剖析
内容四:大型分布式系统性能优化 1. 系统性能优化的模式都有哪些; 2. 系统性能优化常用的步骤是什么; 3. 系统性能优化的环节都能哪些; 4. 我们的实践案例;
内容五:分布式系统数据库架构设计与实践 1. 数据库架构设计基本概念; 2. 高可用性设计与实践; 3. 高并发设计与实践; 4. 读性能设计与实践; 5. 一致性设计与实践; 6. 扩展性设计与实践; 7. 我们的实践案例;
内容六:分布式系统数据库架构设计与实践 1. 数据库架构设计基本概念; 2. 高可用性设计与实践; | |


