软件设计模式最佳实践课程
课程天数:2天
课程介绍
大多数软件应用,都需要进行二次开发或者升级的过程,都要应对需求的变化,是否由于代码杂乱,可读性差,导致开发不敏捷。是否因为增加某个功能或者某个需求变化,导致代码大面积重构呢,是否遇到系统无法扩展、维护性差,可测试性也很差的情况呢。
课程收益
• 全真案例、借助案例与设计模式知识的原理、借助最佳实践、帮助您提高设计能力,从而提高开发效率和设计质量
• 以新视角,揭示模式的本质、思想方法,剖析出模式之道,跳出为模式而模式的陷阱
• 提升设计能力,使开发人员由编程小工到设计专家
• 结合测试驱动开发与重构,提高软件设计质量
• 关注业界内设计模式,以实战训练驱动对设计模式的理解与运用
培训对象
• 各类软件研发中心的软件设计师、数据架构师, 项目经理,技术总监,开发人员。
课程大纲
第一单元:什么是优秀设计和为什么要使用设计模式
内容一:什么是好的设计
• 什么是好的软件详细设计和衡量的手段;
• 世界大师的观点(Robert C Martin , Peter Code,` James Shor);
• 我们现实项目的情况,随时需求的变化,我们自以为豪的设计,都逐渐变烂,变成纠缠不清的代码浆糊;
• 可扩展性(Extensibility)容易添加新的功能. 结合案例,通过那些手段如何实现该目标;
• 灵活性(Flexibility)代码修改平稳地发生. 结合案例,通过那些手段如何实现该目标;
• 可插入性(Pluggability)容易将一个类抽出去,同时将另一个有同样接口的类加入进来. 结合案例,通过那些手段如何实现该目标;
• 分析真实项目,如何做的详细设计,给我们哪些启示,我们可以学习到什么;
• 分析我们在项目之中是那些原因导致了没有实现这些目标;
案例分析:
内容二:案例
• 某档案移交接收系统:纷繁复杂的嵌套判断;
• 某多媒体制作软件:上传-下载模块;
• 案例涉及,需要详细学习如下设计模式及原则;
• 简单工厂、单例、策略模式;
• 重点:如何组织自己的代码和模块:指令与查询分离原则;
• 对有多年编程经验的人员,函数级的编码是小儿科?
• 分析模式使用前和后的对比;
第二单元:设计模式与设计原则
内容一:面向对象设计原则与设计模式关系;
• 软件设计目标,基本原则和模式关系;
• 开闭原则;
• 依赖倒置原则;
• 单一职责原则;
• 里氏替换原则;
• 合成/聚合复用原则;
• 接口隔离原则和Demeter法则;
• 通过案例进行分析,模式如何使用;
内容二:案例分析—OO基本原则与设计模式 ;
• 通过经典面向对象案例,要求学员分别使用过程式和面向对象2种思维,进行设计;
• 进行对比2种思维的不同点和结果;
• 学员通过案例指出OO是否真正做到了它所说的价值;
• 这些小案例涉及项目开发中的常见的困境、疑惑,本节探讨如何通过设计原则解决;
• 讨论设计原则与设计模式的关系,已经在没有合适模式可用的情况下如何分析、解决问题。
第三单元:如何才能正确使用模式
内容一:设计模式精髓封装变化
• 设计模式精髓—如何应对变化;
• 封装变化的原则—变化不能散落多处和变化不能交织;
• 共性和可变性分析原理;
• 分析矩阵工具应用;
• 共性和可变性分析与设计模式思想;
内容二:模式案例–咖啡机系统
• 介绍项目需求情况,进行设计;
• 学习设计模式(Strategy / Abstrct Factory/ Template Method);
内容三:模式案例–某数据展示系统
• 项目子系统背景和需求;
• 系统的设计思考过程;
• 展示如何用模式,进行设计;
• 学习设计模式(Strategy /Command/Template Method/ NULL Objecct /Adapter/表驱动法/Singleton );
内容四:模式案例–某数据分析系统
• 项目子系统背景和需求;
• 系统的设计思考过程;
• 展示如何用模式,进行设计;
• 学习设计模式(Observer / Visitor/ Composite /Command/ Strategy /Adapter/Singleton );
第四单元:重构到模式
内容一:重构到模式----错了再改,事不过三 ;
• 设计坏味道概述;
• 重构思想;
• 重构到设计模式;
• 常见设计模式的重构演化的过程;
内容二:案例-某数据分析系统的设计
• 介绍项目需求情况,进行设计;
• 通过重构逐步实现设计模式;
• Framework 设计思想—好莱坞原则;
• 学习设计模式;
• Factory模式;
• Strategy模式;
• Decorator模式;
• Observer模式;
• 架构模式-分层、管道过滤器模式;
• 架构模式的重构及演变,每步的依据及效果对比;
• 从结构上考虑、从效率上考虑;
第五单元:用模式去思考—对设计模式本质的思索及探讨
内容一:模式案例- 数据文件处理系统
• 项目背景介绍和前期规划;
• 从最初的需求进行分析,到系统的设计,最后到编码实现该案例,全程进行面向对象的分析,建模,设计和最终的开发实现;
• 学习IOC思想在框架设计中的重要作用;
• 在案例中自然使用模式,而非生搬硬套! (Façade, Strategy、Template Method 、Mediator, Simple Factory Command,模式);
• 案例采用逐步推演的方法,针对需求的不断变化进行设计的演变。设计灵活的系统框架;
• 通过案例学习怎样才能合适应用模式;
内容二:设计模式的本质探讨
• 指出什么是优秀设计和丑陋设计;
• 总结自己的模式-神似而非型似;
• 探讨相似模式的本质;
• “间接类”模式的推演及演化;
• “流程类”模式的推演及演化;
• 避免模式的误用,讨论模式的陷阱:在看似典型的场景,但不宜使用模式的场合。