课程简介
本课程除了深入剖析各种典型的设计模式之原理与结构外, 同时会抽取大量知名程序库中的设计模式,利用其源码辅助并加强原理讲解。并且结合讲师大量实际项目案例进行分析. 这种方式对于设计模式的学习有着极大效果。 与其它的仍然沿用传统模式目录方式逐一讲述每一模式的意图,结构,适应性等的培训和图书完全不同.
课程1/3的时间介绍设计模式思想和原理,1/3时间案例,并且要求学员组合成小组进行现场设计. 最后1/3时间再介绍该案例的设计过程,讲师带领大家一起对设计结果进行分析,指出不”和谐”的地方,通过逐步运用模式,改善设计. 而不是把最完美的答案一下子放到学员的面前,让你佩服.并且分析为什么使用模式,而不是过度设计,为什么又要放弃模式. 因为了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程之中蕴藏着大智慧.培训时根据实际情况,可以安排学员自己的项目代码或者设计作为课程案例进行分析和设计.
目标收益
培训对象
课程大纲
第一单元:设计模式思想与困惑 |
内容一:软件设计模式---模式到底是什么?价值在哪里? 1.什么是模式 2.为什么需要设计模式? 难道就为了面试吗? 3.设计模式能够给我们带来什么? 4.设计模式学习面临的困难和解决思路 5.从了解模式到正确应用模式 1.案例分析---某数据传输系统,在使用模式前解决方案 和 使用模式后的对比 内容二:软件设计模式本质—你真的知道模式背后的原理吗? 1.发现变化进行封装变化 2.把变化与不变必须分离 3.针对接口的编程,而不是针对实现 4.组合优于继承 1.案例分析—某数据采集系统设计分析,分析模式背后的本质 内容三:什么是好的设计 1.什么是好的设计? 2.难道不使用设计模式就是坏的设计吗? 3.为什么需求变化总是使你痛苦? 和你的设计有关系吗? 4.好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。 5.设计模式可以使你的设计更灵活,更易复用,更具可扩展性 案例分析—某政府目4种设计方案的对比, 那种更合适?多种方案的对比 |
第二单元: 面向对象思维 |
内容一:面向对象思维是模式基础 1.面向对象分析与设计的本质 2.面向对象设计思维与面向过程设计思维—职责驱动设计 3.抽象对象模型 4.封装对象模型 5.继承对象模型 6.多态对象模型 7.面向对象常见的错误认识—思考OO带来的价值 8.为什么学习设计模式需要面向对象思维 9.从面向对象到模式到再到真正的面向对象 10.案例分析—某税务项目, 使用面向对象设计和过程化设计 PK,,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 ! 内容二:面向对象设计原则(principles) 1.依赖倒置原则(DIP) 2.控制反转原则(IOC) 3.开放封闭原则(OCP) 4.单一职责原则(SRP) 5.Liskov 替换原则(LSP) 6.接口隔离原则(ISP) 7.对象组合优于类继承 8.封装变化点 9.面向接口编程 10.案例分析—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 |
第三单元:设计模式应用策略2—知道模式 |
内容一:知道模式 –你连设计模式都不了解, 还算是设计师吗? 1.了解模式-需要知道自己不知道 2.研读模式的关键4要素 3.创建型模式 4.行为型模式 5.结构型模式 6.该阶段经常遇到的应用问题和对策 7.案例分析—设计模式连连看, 你知道模式吗? 某公司设计模式考试题 内容二:模式案例– 多功能文件处理系统设计 1.介绍项目背景情况,如何应对将来的各种变化 2.学员分组进行设计 3.应用设计模式,如何改善设计 4.分析设计模式是否带来软件的可维护性 5.学习(Factory Method/Adapter/Proxy/Observer/Strategy等几种设计模式和设计原则) 本节深入阐述GOF 23种经典设计模式(包括创建型模式、结构型模式、行为型模式),深入解析它们的意图、动因、原理、实现与应用实践。 |
第四单元:设计模式应用策略3—临摹大师 |
内容一:研读经典系统—学习大师如何使用设计模式 1.学习设计模式后,可是无法使用在真实项目的症状 2.分析经典作品,重新思考设计模式的威力 3.研读设计模式的关键要素 内容二:模式案例–薪酬管理系统设计模式应用分析 1.Robort C Martion 是如何考虑问题的 2.架构思路 3.设计中的博弈点,哪些值得我们学习 4.Martion设计的过程中是怎样应用设计模式的。 5.学习设计模式(strategy / /Template Method/ Adapter/ Command) 6.通过研读经典学习到什么? |
第五单元:设计模式应用策略4— 你知道如何用模式去思考吗 |
内容一:用模式思考系统设计 1.基于模式的设计系统 2.用模式思考的过程 3.模式的应用层次和组合应用模式 4.基于模式的方法和步骤 内容二:放弃设计模式的智能—只要遵循原则,保持简单 1.放弃模式更需要智能, 2.设计需要的原则 a)重用原则 b)扩展原则 c)隔离原则 d)转接原则 e)保变原则 3.案例分析---怎样去除设计模式, 不用设计模式 内容三:模式案例–电子文件系统 1.项目系统背景和需求 2.典型的场景下,如何考虑使用模式。 3.Bridge / strategy / class explosion的博弈。 4.系统的设计的本质 – 不是为了模式! 5.如何支持第3方接入的运用 - Template Method VS. IOC 6.系统的设计思考过程 7.展示如何用模式,进行设计 8.学习设计模式() 内容四:用模式思考系统设计 5.基于模式的设计系统 6.用模式思考的过程 7.模式的应用层次和组合应用模式 8.基于模式的方法和步骤 内容五:放弃设计模式的智能—只要遵循原则,保持简单 4.放弃模式更需要智能, 5.设计需要的原则 a)重用原则 b)扩展原则 c)隔离原则 d)转接原则 e)保变原则 6.案例分析---怎样去除设计模式, 不用设计模式 内容六:模式案例–电子文件系统 9.项目系统背景和需求 10.典型的场景下,如何考虑使用模式。 11.Bridge / strategy / class explosion的博弈。 12.系统的设计的本质 – 不是为了模式! 13.如何支持第3方接入的运用 - Template Method VS. IOC 14.系统的设计思考过程 15.展示如何用模式,进行设计 |
第六单元:设计模式应用策略5—重构到模式 |
内容一:重构已有的系统 1.设计坏味道概述 2.重构思想 3.理解如何结合重构和模式; 4.用模式导向的重构(pattern-directed refactoring)改善既有代码的设计; 5.找出需要进行模式导向重构的代码段; 6.了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。 7.一组坏味 (也就是问题),表示需要进行模式导向的重构; 8.实现同一模式的不同方式的示例; 9.什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。 10.常见设计模式的重构演化的过程 内容二:案例- 某网络数据分析系统的设计 1.介绍项目需求情况,进行设计 2.通过重构逐步实现设计模式 3.Framework 设计思想—好莱坞原则 4.学习设计模式(Factory Method, Template Method, Composite, Chain of Responsibility ) |
第七单元:设计模式对比大讨论 |
内容一:模式本质,通过对比了解设计模式细节 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模式与职责链模式 将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法。 |
第一单元:设计模式思想与困惑 内容一:软件设计模式---模式到底是什么?价值在哪里? 1.什么是模式 2.为什么需要设计模式? 难道就为了面试吗? 3.设计模式能够给我们带来什么? 4.设计模式学习面临的困难和解决思路 5.从了解模式到正确应用模式 1.案例分析---某数据传输系统,在使用模式前解决方案 和 使用模式后的对比 内容二:软件设计模式本质—你真的知道模式背后的原理吗? 1.发现变化进行封装变化 2.把变化与不变必须分离 3.针对接口的编程,而不是针对实现 4.组合优于继承 1.案例分析—某数据采集系统设计分析,分析模式背后的本质 内容三:什么是好的设计 1.什么是好的设计? 2.难道不使用设计模式就是坏的设计吗? 3.为什么需求变化总是使你痛苦? 和你的设计有关系吗? 4.好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。 5.设计模式可以使你的设计更灵活,更易复用,更具可扩展性 案例分析—某政府目4种设计方案的对比, 那种更合适?多种方案的对比 |
第二单元: 面向对象思维 内容一:面向对象思维是模式基础 1.面向对象分析与设计的本质 2.面向对象设计思维与面向过程设计思维—职责驱动设计 3.抽象对象模型 4.封装对象模型 5.继承对象模型 6.多态对象模型 7.面向对象常见的错误认识—思考OO带来的价值 8.为什么学习设计模式需要面向对象思维 9.从面向对象到模式到再到真正的面向对象 10.案例分析—某税务项目, 使用面向对象设计和过程化设计 PK,,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 ! 内容二:面向对象设计原则(principles) 1.依赖倒置原则(DIP) 2.控制反转原则(IOC) 3.开放封闭原则(OCP) 4.单一职责原则(SRP) 5.Liskov 替换原则(LSP) 6.接口隔离原则(ISP) 7.对象组合优于类继承 8.封装变化点 9.面向接口编程 10.案例分析—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 |
第三单元:设计模式应用策略2—知道模式 内容一:知道模式 –你连设计模式都不了解, 还算是设计师吗? 1.了解模式-需要知道自己不知道 2.研读模式的关键4要素 3.创建型模式 4.行为型模式 5.结构型模式 6.该阶段经常遇到的应用问题和对策 7.案例分析—设计模式连连看, 你知道模式吗? 某公司设计模式考试题 内容二:模式案例– 多功能文件处理系统设计 1.介绍项目背景情况,如何应对将来的各种变化 2.学员分组进行设计 3.应用设计模式,如何改善设计 4.分析设计模式是否带来软件的可维护性 5.学习(Factory Method/Adapter/Proxy/Observer/Strategy等几种设计模式和设计原则) 本节深入阐述GOF 23种经典设计模式(包括创建型模式、结构型模式、行为型模式),深入解析它们的意图、动因、原理、实现与应用实践。 |
第四单元:设计模式应用策略3—临摹大师 内容一:研读经典系统—学习大师如何使用设计模式 1.学习设计模式后,可是无法使用在真实项目的症状 2.分析经典作品,重新思考设计模式的威力 3.研读设计模式的关键要素 内容二:模式案例–薪酬管理系统设计模式应用分析 1.Robort C Martion 是如何考虑问题的 2.架构思路 3.设计中的博弈点,哪些值得我们学习 4.Martion设计的过程中是怎样应用设计模式的。 5.学习设计模式(strategy / /Template Method/ Adapter/ Command) 6.通过研读经典学习到什么? |
第五单元:设计模式应用策略4— 你知道如何用模式去思考吗 内容一:用模式思考系统设计 1.基于模式的设计系统 2.用模式思考的过程 3.模式的应用层次和组合应用模式 4.基于模式的方法和步骤 内容二:放弃设计模式的智能—只要遵循原则,保持简单 1.放弃模式更需要智能, 2.设计需要的原则 a)重用原则 b)扩展原则 c)隔离原则 d)转接原则 e)保变原则 3.案例分析---怎样去除设计模式, 不用设计模式 内容三:模式案例–电子文件系统 1.项目系统背景和需求 2.典型的场景下,如何考虑使用模式。 3.Bridge / strategy / class explosion的博弈。 4.系统的设计的本质 – 不是为了模式! 5.如何支持第3方接入的运用 - Template Method VS. IOC 6.系统的设计思考过程 7.展示如何用模式,进行设计 8.学习设计模式() 内容四:用模式思考系统设计 5.基于模式的设计系统 6.用模式思考的过程 7.模式的应用层次和组合应用模式 8.基于模式的方法和步骤 内容五:放弃设计模式的智能—只要遵循原则,保持简单 4.放弃模式更需要智能, 5.设计需要的原则 a)重用原则 b)扩展原则 c)隔离原则 d)转接原则 e)保变原则 6.案例分析---怎样去除设计模式, 不用设计模式 内容六:模式案例–电子文件系统 9.项目系统背景和需求 10.典型的场景下,如何考虑使用模式。 11.Bridge / strategy / class explosion的博弈。 12.系统的设计的本质 – 不是为了模式! 13.如何支持第3方接入的运用 - Template Method VS. IOC 14.系统的设计思考过程 15.展示如何用模式,进行设计 |
第六单元:设计模式应用策略5—重构到模式 内容一:重构已有的系统 1.设计坏味道概述 2.重构思想 3.理解如何结合重构和模式; 4.用模式导向的重构(pattern-directed refactoring)改善既有代码的设计; 5.找出需要进行模式导向重构的代码段; 6.了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。 7.一组坏味 (也就是问题),表示需要进行模式导向的重构; 8.实现同一模式的不同方式的示例; 9.什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。 10.常见设计模式的重构演化的过程 内容二:案例- 某网络数据分析系统的设计 1.介绍项目需求情况,进行设计 2.通过重构逐步实现设计模式 3.Framework 设计思想—好莱坞原则 4.学习设计模式(Factory Method, Template Method, Composite, Chain of Responsibility ) |
第七单元:设计模式对比大讨论 内容一:模式本质,通过对比了解设计模式细节 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模式与职责链模式 将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法。 |