为什么需要该课程
<设计模式>自从1995年一书出版,已经25周年以上了. 如今,对于很多人来说,设计模式已经成为开发标准词典的一部分.25年来,设计模式思想影响了整整一代软件从业者.而且可以预料,它的影响还将继续下去.可是目前国内的大部分程序员学习设计模式和原则之后,往往是不知道如何使用模式,或者滥用模式(言必称模式),最终放弃不用模式,这样三个阶段,最终导致设计模式思想还远没有真正广泛应用,更没有起到应有的作用,因而导致很多对设计模式的误解(学习设计模式无用论).该课程就是针对学习设计模式这3个经典错误问题而开设的.
作为为一门高级课程,若内容缺乏实务便易流于抽象与空泛。 本课程除了深入剖析各种典型的设计模式之原理与结构外, 同时会抽取大量知名程序库中的设计模式,利用其源码辅助并加强原理讲解。并且结合讲师大量实际项目案例进行分析. 这种方式对于设计模式的学习有着极大效果。 与其它的仍然沿用传统模式目录方式逐一讲述每一模式的意图,结构,适应性等的培训和图书完全不同.
课程1/3的时间介绍设计模式思想和原理,1/3时间案例,并且要求学员组合成小组进行现场设计. 最后1/3时间再介绍该案例的设计过程,讲师带领大家一起对设计结果进行分析,指出不”和谐”的地方,通过逐步运用模式,改善设计. 而不是把最完美的答案一下子放到学员的面前,让你佩服.并且分析为什么使用模式,而不是过度设计,为什么又要放弃模式. 因为了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程之中蕴藏着大智慧.培训时根据实际情况,可以安排学员自己的项目代码或者设计作为课程案例进行分析和设计。
谁已经选择了我们的咨询和培训
我们已经为几十家企业提供了多次培训和咨询服务,以下企业已经选择了我们的内训课程
互联网研发企业,比如百度研发中心,阿里巴巴, 腾讯 ,畅唐科技, 猎豹移动(原金山移动)
电信研发企业,比如思科研发中心,阿尔卡特-朗讯研发中心,华为研发中心,摩托罗拉研发中心,大唐电信研发,广州从兴电子,亿阳通信 , 爱立信研发中心,鼎桥通信技术, 艾默生研发中心,中兴通讯研发中心,
广州诚毅科技研发中心,神州数码网络通信研发中心,北京全路通信信号研究设计院,上海贝尔电信
企业软件研发企业,比如Adobe中国研发中心,北京久其研发中心,博古中国研发中心,金蝶深圳研发中心, EMC中国研发中心(北京和上海),VMware中国研发中心,珠海远光,爱德万测试有限公司advantest
嵌入式软件企业,比如阿尔卑斯中国研发中心,德国M&M Software,西门子研发中心, Sony研发中心,金立智能研究院,南车研发中心,德塞西威,霍尼韦尔研发中心, 东芝中国研发中心, 汇川科技, 霍尼韦尔
外包类企业,联盟计算机服务
金融行业:恒生电子,华腾,中国人民银行研发中心,工商行研发中心,平安科技研发中心,建行研发中心,深圳登记结算研发中心,花旗银行中国研发中心
课程大纲
第一篇: 设计模式-设计原理与面向对象设计思维 | ||
主题 | 培训内容 | 备注 |
第1单元 为什么需要设计模式
| 内容一:软件设计模式---模式到底是什么?价值在哪里? 1. 什么是模式 2. 为什么需要设计模式? 难道就为了面试吗? 3. 设计模式能够给我们带来什么? 4. 设计模式学习面临的困难和解决思路 5. 从了解模式到正确应用模式 1. 练习---某业务系统,在使用模式前解决方案 和 使用模式后的对比
内容二:软件设计模式本质—你真的知道模式背后的原理吗? 1. 发现变化进行封装变化 2. 把变化与不变必须分离 3. 针对接口的编程,而不是针对实现 4. 组合优于继承 1. 练习—某认证项目设计分析,分析模式背后的本质
内容三:什么是好的设计-----难道使用设计模式就是好的设计吗? 1. 什么是好的设计? 2. 难道不使用设计模式就是坏的设计吗? 3. 为什么需求变化总是使你痛苦? 和你的设计有关系吗? 4. 好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。 5. 设计模式可以使你的设计更灵活,更易复用,更具可扩展性 练习—某项目多种设计方案的对比, 那种更合适?多种方案的对比 | |
第2单元 面向对象设计思维与原理
| 内容一:面向对象思维是模式基础 1. 面向对象分析与设计的本质 2. 面向对象设计思维与面向过程设计思维—职责驱动设计 3. 抽象本质 4. 封装本质 5. 继承本质 6. 多态本质 7. 面向对象常见的错误认识—思考OO带来的价值 8. 为什么学习设计模式需要面向对象思维 9. 从面向对象到模式到再到真正的面向对象 10. 练习—某项目, 使用面向对象设计和过程化设计 PK,,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 !
内容二:面向对象设计原则(principles) 1. 依赖倒置原则(DIP) 2. 开放封闭原则(OCP) 3. 单一职责原则(SRP) 4. Liskov 替换原则(LSP) 5. 接口隔离原则(ISP) 6. 练习—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 | |
第二篇: 设计模式精讲------创建型 | ||
第3单元 创建型模式精讲
| 内容一:简单工厂模式 1. 简单工厂模式概述 2. 简单工厂模式结构与实现 3. 简单工厂模式结构 4. 简单工厂模式实现 5. 简单工厂模式应用实例 6. 关于创建对象与使用对象 7. 简单工厂模式的简化 8. 简单工厂模式优/缺点与适用环境 9. 简单工厂模式优点
内容二:工厂方法模式 1. 工厂方法模式概述 2. 工厂方法模式结构与实现 3. 工厂方法模式结构 4. 工厂方法模式实现 5. 工厂方法模式应用实例 6. 工厂方法模式优/缺点与适用环境 7. 工厂方法模式优点
内容三:单例模式模式 1. 单例模式概述 2. 单例模式结构与实现 3. 单例模式结构 4. 单例模式实现 5. 单例模式应用实例 6. 饿汉式单例与懒汉式单例 7. 单例模式优/缺点与适用环境 8. 单例模式优点
内容四:创建型模式的应用案例分析 1. 创建型的应用案例分析 | |
第三篇: 设计模式精讲------结构性型 | ||
第4单元 结构型模式精讲
| 内容一:适配器模式 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. 结构型概述应用案例 | |
第四篇: 设计模式精讲------行为型 | ||
第5单元 行为型模式精讲
| 内容一:代理模式 1. 代理模式概述 2. 代理模式结构与实现 3. 代理模式应用实例 4. 远程代理 5. 虚拟代理 6. Java动态代理实现 7. 代理模式优/缺点与适用环境
内容二:职责链模式 1. 职责链模式概述 2. 职责链模式结构与实现 3. 职责链模式应用实例 4. 纯与不纯的职责链模式 5. 职责链模式优/缺点与适用环境
内容四:观察者模式 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. 模板方法模式优/缺点与适用环境 | |
第五篇: 设计模式对比 | ||
第6单元 设计模式对比
| 内容一:模式大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模式与职责链模式
将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法。
| |
第六篇: 设计模式应用案例 | ||
第7单元 设计模式应用案例
| 内容一:用模式思考系统设计 1. 基于模式的设计系统 2. 用模式思考的过程 3. 模式的应用层次和组合应用模式 4. 基于模式的方法和步骤
内容二:练习案例- Log子系统的设计 1. 介绍项目需求情况,进行设计 2. 通过重构逐步实现设计模式 3. Framework 设计思想—好莱坞原则 4. 学习设计模式(Factory Method, Template Method, Composite, Chain of Responsibility ) | |
第8单元 设计模式应用策略 有时放弃模式更值得学习 | 内容一:模式案例–XXXX缓存系统 1. 项目系统背景和需求 2. 缓存任何对象,任何java对象都可以缓存。 3. 拥有全面的API--给你全面的程序来控制所有的缓存的特性。 4. 永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。 5. 支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。 6. 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。 7. 系统的设计思考过程 8. 展示如何用模式,进行设计 9. 学习设计模式() |