《03-软件设计模式应用和案例分析》由会员分享,可在线阅读,更多相关《03-软件设计模式应用和案例分析(5页珍藏版)》请在金锄头文库上搜索。
1、=软件设计模式应用和案例分析软件设计模式应用和案例分析-15 周年之际,重新思考如何正确应用设计模式一、一、 课程介绍:课程介绍:2009 年是一书出版 15 周年.15 年来,设计模式思想影响了整整一代程序员.而且可以预料,它的影响还将继续下去.可是目前国内的大部分程序员学习设计模式和原则之后,往往是不知道如何使用模式,滥用模式(言必称模式),最终放弃不用模式,这样三个阶段,最终导致设计模式思想还远没有真正广泛应用,更没有起到应有的作用,因而导致很多对设计模式的误解(学习设计模式无用论).该课程就是针对学习设计模式这 3 个经典错误问题而开设的.二、二、 课程思想课程思想本课程注重实战,不尚
2、空谈.讲师从 2001年开始学习设计模式,与大家一样历经了3个漫长的痛苦阶段,直到2006年才真正理解设计模式,开始灵活运用设计模式.讲师根据本人的学习过程和经验来介绍如何解决这些问题.与其他的仍然沿用传统模式目录方式逐一讲述每一模式的意图,结构,适应性等的培训和图书完全不同.课程不仅仅介绍经典的 GOF 设计模式,而且涉及常见的其他模式和软件架构模式(因为案例涉及,并且是真实项目).该课程首次提出了解决设计模式如何应用的 7 个步骤:设计模式应用策略 1建立面向对象思维设计模式应用策略 2知道设计模式,知道自己不知道设计模式应用策略 3贴身模仿,研读大师经典作品设计模式应用策略 4根据场景,
3、用模式去思考设计设计模式应用策略 5掌握模式精髓封装变化,使用共性与可变性分析设计模式应用策略 6重构到模式,设计模式是重构的目标设计模式应用策略 7信手拈来,运用自如以上7个步骤针对应用设计模式的不同错误症状,解决如何应用模式.知道模式是什么和真正理解什么时候去应用模式,就完全是不同的境界.以上步骤,都借助于真实项目案例(不是简单的演示之类的 Demo,而是真实的系统),展示如何在实际开发之中正确的选择和运用模式,在这些案例之中,在设计时应用模式能看到实实在在的效果(每个案例,均有 PK 使用之前和使用之后对比).三、三、课程特色课程特色- - - -案例驱动:案例驱动:课程 1/3 的时间
4、介绍设计模式思想,1/3 时间案例,并且要求学员组合成小组进行现场设计.最后 1/3 时间再介绍该案例的设计过程,讲师带领大家一起对设计结果进行分析,指出不”和谐”的地方,通过逐步运用模式,改善设计.而不是把最完美的答案一下子放到学员的面前,让你佩服.并且分析为什么用,而不是过度设计.因为了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程之中蕴藏着大智慧.培训时根据实际情况,可以安排学员自己的项目代码或者设计作为课程案例进行分析和重构.四、四、 对学员要求:对学员要求:=该课程适合各类 IT/软件企业和研发机构的软件架构师、软件设计师、程序员。特别能够带着设计模式实践时的
5、困惑和问题,效果最佳.到时可以与讲师 PK 讨论,这样对你帮助会更大,收获也会更多.本课程不是设计模式入门级别课程,不会目录式介绍每一模式的详细细节,因此需要学员课前做好相关准备,最好已经具备模式概念和常见模式的基本知识.最好课前可以简单预习以下模式:五、五、具体授课安排:具体授课安排:模式模式类型类型案例涉及模式案例涉及模式( ( ( (最好提前预习最好提前预习) ) ) )备注备注GOFGOFGOFGOF设计设计模式模式Singleton 模式/Builder 模式/Simple Factory 模式FactoryMethod模式/Strategy/Observer/ChainofResp
6、onsibility/Command/TemplateMethod/Adapter/Proxy/Faade/Bridge/Decorator/Composite课程案例仅仅涉及课程案例仅仅涉及1 1 1 12 2 2 2种种 GOFGOFGOFGOF 常用设计模常用设计模式式, , , ,也仅仅介绍这些也仅仅介绍这些模式模式( ( ( (重点学习重点学习, , , ,不会不会逐一介绍逐一介绍23232323 种种) ) ) )其他其他设计设计模式模式Object Pool 模式/Dependency Injection 依赖注入/Null Object 模式/Plug-In 模式/Active
7、 Object 模式/Abstract Server 模式虽然不属于虽然不属于 GOF,GOF,GOF,GOF,但但是经常在软件设计时是经常在软件设计时使用使用. . . .案例也涉及案例也涉及架构架构模式模式Pipe Filter 架构模式/Layer 架构模式/Microkernel Pattern/MVC/案例涉及这些架构模案例涉及这些架构模式式, , , ,在高层设计在高层设计主题主题授课内容授课内容备注备注设计模式设计模式思想与应思想与应用困惑用困惑内容一:软件设计模式概述内容一:软件设计模式概述1.设计模式的思想2.设计模式学习面临的困难和解决思路3.从了解模式到正确应用模式设计模
8、式设计模式应用策略应用策略1 1 1 1建立面建立面向对象思向对象思维维内容一:面向对象思维是模式基石内容一:面向对象思维是模式基石- - - - 唯有境界相同方可坐而唯有境界相同方可坐而论道论道1.面向对象分析与设计的本质2.面向过程设计功能分解3.职责分配驱动 OO设计4.面向对象常见的错误认识思考 OO带来的价值5.为什么学习设计模式需要面向对象思维6.设计模式真正应用基石OO7.从面向对象到模式到再到真正的面向对象内容二:面向对象经典案例内容二:面向对象经典案例 XXXXXXXXXXXX 嵌入式系统嵌入式系统1.通过经典面向对象案例,要求学员分别使用过程式和面向对象 2 种思维,进行设
9、计2.进行对比 2 种思维的不同点和结果3.学员通过案例指出 OO是否真正做到了它所说的价值4.该设计保留到学习后,最后自己指出那些通过设计模式完善.=设计模式设计模式应用策略应用策略2 2 2 2知道模知道模式式内容一:知道模式内容一:知道模式 背会唐诗三百首背会唐诗三百首1.指出什么是优秀设计和丑陋设计2.了解模式-需要知道自己不知道3.研读每种模式的关键 4 要素4.根据巴甫洛夫条件反射理论应用模式5.该阶段经常遇到的应用问题和对策内容二:设计目标内容二:设计目标, , , ,原则与模式原则与模式1.软件设计目标,基本原则和模式关系2.开闭原则和依赖导致原则3.里氏替换原则和合成/聚合复
10、用原则4.接口隔离原则和 Demeter 法则5.通过案例进行分析内容三:模式案例内容三:模式案例 XXXXXXXXXXXX 电力系统电力系统1.介绍项目背景情况,如何应对将来的各种变化2.学员分组进行设计3.应用设计模式,如何改善设计4.分析设计模式是否带来软件的可维护性5.学习(Factory Method/Adapter 等几种设计模式和设计原则)设计模式设计模式应用策略应用策略3 3 3 3贴身模贴身模仿仿内容一:研读经典系统内容一:研读经典系统 平生不识陈近南,纵称英雄也枉然平生不识陈近南,纵称英雄也枉然1.学习设计模式后,可是无法使用在真实项目的症状2.分析经典作品,重新思考设计模
11、式的威力3.研读设计模式的关键要素内容二:模式案例内容二:模式案例 2 2 2 2位世界位世界 OOOOOOOO大师系统大师系统1.Erich Gamma 和 Kent Beck 的 Junit2.介绍 Junit 基本知识3.Junit 架构思路(微内核模式)4.设计 JUnit 的过程中是怎样应用设计模式的。5.学 习 设 计 模 式(Command/Composite/TemplateMethod/Adapter/Observer/Decorate )6.通过研读经典学习到什么?=设计模式设计模式应用策略应用策略4 4 4 4应用模应用模式场景预式场景预先设计先设计内容一:用模式思考系统
12、设计内容一:用模式思考系统设计1.基于模式的设计系统2.用模式思考的过程3.模式的应用层次和组合应用模式4.基于模式的方法和步骤内容二:模式案例内容二:模式案例 XXXXXXXXXXXX 电信系统电信系统1.项目子系统背景和需求2.系统的设计思考过程3.展示如何用模式,进行设计4.学 习 设 计 模 式(Command/Composite/TemplateMethod/Adapter/Observer/Decorate )设计模式设计模式应用策略应用策略5 5 5 5共性与共性与可变性分可变性分析析内容一:设计模式精髓封装变化内容一:设计模式精髓封装变化如何提高识别率如何提高识别率1.设计模式
13、精髓如何应对变化2.封装变化的原则变化不能散落多处和变化不能交织3.共性和可变性分析原理4.分析矩阵工具应用5.共性和可变性分析与设计模式思想内容二:模式案例内容二:模式案例 XXXXXXXXXXXX金融系统金融系统1.介绍项目需求情况,进行设计2.展示需求变更对设计的影响3.通过重构逐步实现设计的可维护, 可重用4.学 习 设 计 模 式 ( Observer/Proxy/Chainof Responsibility/Faade/Factory Method)=六、六、 实验环境:实验环境:该课程希望学员熟悉任一种面向对象编程语言(比如 Java/C+/C#等)和 UML 基本知识.课堂上主
14、要使用你的笔和纸来绘制 UML类图和顺序图,不需要 UML 专门工具和编程环境.一个建模的好坏,不取决与工具, 关键是使用工具的那个脑袋.七、七、 强烈推荐书籍强烈推荐书籍( ( ( (课前或课后建议学员深入阅读课前或课后建议学员深入阅读) ) ) ):Design Pattern Explained 设计模式解析 第 2 版Alan Shallowway 徐言声译Agile SoftwareDevelop Principles,Pattern,and Practice 敏捷软件开发 原则/模式/与实践Robert C.Martin 邓辉译设计模式设计模式应用策略应用策略6 6 6 6重构到重
15、构到模式模式内容一:重构到模式内容一:重构到模式-错了再改错了再改, , , ,事不过三事不过三1.设计坏味道概述2.重构思想3.重构到设计模式(常见的不是真正 OO症状)4.拙劣设计症状分析-低级篇5.拙劣设计症状分析-中级篇6.拙劣设计症状分析-高级篇7.代码静态检查工具的和持续集成8.常见设计模式的重构演化的过程内容二:案例内容二:案例- - - - XXXXXXXXXXXX电信管理子系统的设计电信管理子系统的设计1.介绍项目需求情况,进行设计2.通过重构逐步实现设计模式3.Framework 设计思想好莱坞原则4.学习设计模式(Factory Method, Template Meth
16、od, Composite, Chainof Responsibility )设计模式设计模式应用策略应用策略7 7 7 7灵活运灵活运用用内容一:模式案例内容一:模式案例- - - - XXXXXXXXXXXXHRHRHRHR管理系统管理系统1.项目背景介绍和前期规划2.从最初的需求进行分析,到系统的设计,最后到编码实现该案例,全程进行面向对象的分析,建模,设计和最终的开发实现.3.通 过 案 例 学 习 (Command,ActiveObject,Strategy, Faade,Mediator,Singleton,NullObject 模式)4.通过案例学习常见的错误设计5.通过案例学习怎样才能合适应用模式设计模式设计模式总结总结内容一:设计模式总结内容一:设计模式总结1.设计模式不是银弹2.设计模式真正给设计者带来的价值3.设计模式仅仅是工具4.超越设计模式