课程培训
软件设计模式最佳实战培训课程
课程简介 本课程涵盖 面向对象设计原则、GRASP模式、GOF经典设计模式、其他经典的模式、架构模式5个方面,从面向对方出发,对重要的设计模式和软件设计原则进行了分析与讲解;以多个真实的项目为案例,深入讲解设计模式的运用;提供了大量的项目实例与代码,展现设计模式的结构。 课程内容 面向对象设计原则 开闭原则 / 依赖倒置原则 / 单一职责原则 / 里氏替换原则 /合成/聚合复用原则 Solid原则程序员必知---如果还不知道,被鄙视 GRASP模式 通用职责分配软件模式: 创建者 /信息专家 /低耦合/ 控制器/ 高内聚 / 多态 / 纯虚构/ 间接性 / 保护变化 面向对象职责分配原则 GOF经典设计模式 创建型模式:抽象工厂模式、建造者模式、工厂模式 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式。 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、状态模式、策略模式、职责链模式、访问者模式。 课程会涉及所有23种Gof模式,并将重点放在此处列出的17种常见模式的深入讲解 其他经典的模式 生产者-消费者模式 / IOC / 依赖注入DI / Null 模式 / 表格驱动法 / 主动对象 经常在软件设计时使用的模式 架构模式 Pipe Filter架构模式/Layer架构模式/Microkernel Pattern/MVC/ 经典的机构级模式 此外,本课程对软件模块划分,及如何为模块划分职责进行了详尽的讲解及分析,揭示了软件设计原理及设计过程;帮助架构师掌握架构设计方法与架构设计的模式;本课还帮助设计人员掌握领域分析与建模的正确方法;帮助设计人员进行IT数据结构设计及实例等。 课程大纲 第一单元 优秀系统与不佳系统的辨析——设计模式初探 内容一:什么是优秀的设计的设计 1. 什么是好的软件设计和衡量的手段 2. 可扩展性(Extensibility)容易添加新的功能. 结合案例,通过那些手段如何实现该目标 3. 灵活性(Flexibility)代码修改平稳地发生. 结合案例,通过那些手段如何实现该目标 4. 可插入性(Pluggability)容易将一个类抽出去,同时将另一个有同样接口的类加入进来. 结合案例,通过那些手段如何实现该目标 5. 如何写出简练,易于理解,模块化,层次性,设计良好,高效,优雅,并且清晰的系统。 6. 劣质代码有什么特征 7. 劣质代码的代价 8. 设计模式在构建优秀系统及避免不佳设计中的用途。 9. 分析真实项目,如何做的详细设计,给我们哪些启示,我们可以学习到什么 10. 分析我们在项目之中是那些原因导致了没有实现这些目标. 内容二:案例 11. 某档案移交接收系统:纷繁复杂的嵌套判断 12. 某多媒体制作软件:上传-下载模块 13. 案例涉及,需要详细学习如下设计模式及原则: 14. 简单工厂、单例、策略模式 15. 重点:如何组织自己的代码和模块:指令与查询分离原则。 16. 对有多年编程经验的人员,函数级的编码是小儿科? 17. 分析模式使用前和后的对比 第二单元 设计模式与面向对象设计原则 内容一:面向对象设计原则与设计模式关系 1. 软件设计目标,基本原则和模式关系 2. 开闭原则 3. 依赖倒置原则 4. 单一职责原则 5. 里氏替换原则 6. 合成/聚合复用原则 7. 接口隔离原则和Demeter法则 8. 通过案例进行分析,模式如何使用 内容二:案例分析—OO基本原则与设计模式 1. 通过经典面向对象案例,要求学员分别使用过程式和面向对象2种思维,进行设计 2. 进行对比2种思维的不同点和结果 3. 学员通过案例指出OO是否真正做到了它所说的价值 4. 这些小案例涉及项目开发中的常见的困境、疑惑,本节探讨如何通过设计原则解决。 5. 讨论设计原则与设计模式的关系,已经在没有合适模式可用的情况下如何分析、解决问题。涉及如下模式: a) Façade b) 观察者模式与表驱动法 c) Bridge模式 d) Template Method模式 e) Strategy模式 第三单元 系统/模块中的接口设计,及对外暴露服务技巧——组织接口型模式 内容一:内存接口及Web接口的设计及讨论 1. 接口分离原则 2. 面向对象的要点 3. 系统交互时,松散耦合的设计要点 4. 无状态在接口设计中的重要性,及设计实践 5. 接口的粒度 6. 接口调用次数与粒度的折中 7. 接口版本的设计 8. 新旧接口的兼容性设计技巧——只增不改、灵活参数等 内容二:组织接口型模式 1. 适配器模式。Adapter a) 适配器模式介绍。 b) 容易被忽略的情况:关于接口的修改。 c) 适配器总结。 例:文件解析器系统的接口设计。 2. 外观模式。 a) 令人望而生畏的API函数。 b) 外观模式的作用。 c) 容易被忽略的外观。 d) 外观模式与适配器的辨析。 例:文件解析器系统的外观设计。 3. 中介者模式 a) 中介者模式的使用场景。 b) 中介者模式在架构中的重要地位。 c) 中介者模式与控制者。 第四单元 如何在系统及框架中创建并管理对象/模块? ——创建型模式 内容一:对象及模块创建的管理 1. 对象创建与IOC模式 2. 框架设计中的对象管理——SpringBean分析 3. 在分层架构中,对象创建的要点 内容二:创建型模式 1. 单例模式。 a) 单例模式的意义。 b) 多线程中的问题。 例:引入单例模式。 2. 工厂模式 a) 工厂模式的使用场景。 b) 工厂模式与反射。 例:引入工厂模式。 3. 抽象工厂模式 a) 创建不同对象的多个系列产品。 b) 工厂模式与抽象工厂模式的区别。 例:引入抽象工厂模式。 4. 构造者模式 a) 构造者模式的应用场景。 b) 构造者模式中的控制者。 5. 原型模式 a) 作为工厂的原型 b) 利用克隆进行原型 第五单元 如何设计出高可扩展性的系统!——扩展型模式 内容一:如何应对需求的变化 —— 打造高可扩展性的系统! 1. 从技术的角度,如何应对需求的变化? 2. 高可扩展性系统的特点及达成方式的变迁 3. 框架设计的常用方法 4. 如何平衡精巧系统的设计和开发成本的投入? 5. 不要生硬地套用模式 —— 桥接模式的灵活使用 内容二:扩展型模式 6. 功能与逻辑的关系 a) 功能模块的设计要点。 b) 逻辑模块的设计要点。 c) 系统稳定及可扩展的秘诀。 7. 模板方法模式 a) 部分的多态。 b) 模板方法模式的使用场合。 c) 模板方法模式与IOC。 例:文件解析器中的模板方法模式。 8. 策略模式 a) 继承与组合的辨析。 b) 多态的经典使用。 c) 无处不在的策略模式。 例:运输系统;在多窗口系统中引入策略模式。 9. 桥接模式 a) 从“类爆炸”说起。 b) 复杂多对多的处理。 c) 仅针对接口编程是不够的。 d) 桥接模式的要点:抽象类行为的具体实现中有重复的方法。 e) 从桥接模式到面向对象的误区。 例:在文件解析器中引入桥接模式。 10. 状态模式 a) 状态模式的本质:类状态机。 b) 状态模式的前提条件:经常发生改变的是状态(业务流程),而非对应的处理。 c) 状态模式使用。 d) 状态模式与表驱动法。 e) 策略、桥接、状态、模板方法模式的辨析。 11. 装饰模式 a) 装饰模式的使用场合。 b) 装饰模式的要点。 c) Java中的装饰模式。 例:装饰模式在打印中的使用。 12. 代理模式 a) 代理模式的使用场合。 b) 代理模式的要点。 c) 代理模式与AOP 13. 访问者模式 a) 访问者模式的使用场合。 b) 双重分发机制。 c) 与桥接模式的比较。 例:在演示控制系统中引入桥接模式。 14. 责任链模式 a) 责任链模式的使用场合。 b) 责任链模式的要点。 c) 消息路由与责任链模式。 15. 组合模式 a) 组合模式的使用场合。 b) 组合模式的使用要点。 c) 例:组合模式在表单统计中的使用。 第六单元 系统流程控制的设计——操作型模式 内容一:系统中流程控制的设计 1. 类名暗含的意味 2. 临时创建对象的用途 3. 工作流与命令模式 4. 消费者-生产者模式 5. 消息广播的多种实现形态 内容二:操作型模式 6. 命令模式 1) 命令模式的特点、优点及缺点。 2) 命令模式的典型使用场合。 例:在客户端与服务器端传递命令。 例:在元搜索系统中使用命令模式。 7. 观察者模式 1) 观察者模式的使用场景。 2) 观察者模式与MVC。 3) 观察者模式使用中变体。 例:用观察者模式解决多窗口系统的联动问题。 8. 享元模式 1) 享元模式的使用场景。 2) 内存管理:存根(stub)与享元模式。 9. 备忘录模式 1) 备忘录的使用场景。 10. 迭代器模式 1) Java、stl、c#中的迭代器实例。 例:构造统一的树状结构迭代。 11. 解析器模式: 1) 解析器模式的使用场合。 第七单元 如何才能正确使用模式 内容一:设计模式的精髓——封装变化 1. 设计模式精髓—如何应对变化 2. 封装变化的原则——避免“散弹枪式的外科手术” 3. 如何抽取出系统中的变化点及不变点 4. 不同因素的隔离——保护变量原则 5. 设计模式中封装变化的思想和具体手段探讨 内容二:模式案例–某订单系统 1. 介绍项目需求情况,进行设计 2. 学习设计模式(Strategy / Abstrct Factory/ Template Method) 内容三:模式案例–某数据展示系统 1. 项目子系统背景和需求 2. 系统的设计思考过程 3. 展示如何用模式,进行设计 4. 学习设计模式(Strategy /Command/Template Method/ NULL Objecct /Adapter/表驱动法/Singleton ) 内容四:模式案例–某数据分析系统 1. 项目子系统背景和需求 2. 系统的设计思考过程 3. 展示如何用模式,进行设计 4. 学习设计模式(Observer / Visitor/ Composite /Command/ Strategy /Adapter/Singleton ) 第八单元 重构到模式 内容一:重构到模式----错了再改,事不过三 1. 设计坏味道概述 2. 重构思想 3. 重构到设计模式 4. 常见设计模式的重构演化的过程 内容二:案例- 网络数据分析系统的设计 1. 介绍项目需求情况,进行设计 2. 通过重构逐步实现设计模式 3. Framework 设计思想—好莱坞原则 4. 学习设计模式 5. Factory模式 6. Strategy模式 7. Decorator模式 8. Observer模式 9. 架构模式-分层、管道过滤器模式 10. 架构模式的重构及演变,每步的依据及效果对比 11. 从结构上考虑、从效率上考虑 第九单元 用模式去思考—对设计模式本质的思索及探讨 内容一:模式案例- 数据文件处理系统 1. 项目背景介绍和前期规划 2. 从最初的需求进行分析,到系统的设计,最后到编码实现该案例,全程进行面向对象的分析,建模,设计和最终的开发实现. 3. 学习IOC思想在框架设计中的重要作用 4. 在案例中自然使用模式,而非生搬硬套! (Façade, Strategy、Template Method 、Mediator, Simple Factory Command,模式) 5. 案例采用逐步推演的方法,针对需求的不断变化进行设计的演变。设计灵活的系统框架 6. 通过案例学习怎样才能合适应用模式 内容二:设计模式的本质探讨 1. 指出什么是优秀设计和丑陋设计 2. 总结自己的模式-神似而非型似 3. 探讨相似模式的本质 4. “间接类”模式的推演及演化 5. “流程类”模式的推演及演化 6. 避免模式的误用,讨论模式的陷阱:在看似典型的场景,但不宜使用模式的场合。 内容三:案例- 元搜索系统分析及设计 1. 简单背景介绍 2. 如何面对纷繁的变化因素的组合 3. 一定要使用模式吗——如果能很好地能抽象、隔离不同因素,也许它就是模式。 4. 讨论Command模式的本质。 内容四:案例- 电子文件生成 1. 简单背景介绍 2. 使用模式的第一反应,及陷入陷阱的思索 3. 具体场景使用模式的本质讨论 4. 多态的本质 5. 讨论并介绍表驱动法 6. Template Method、DIP原则Strategy模式的的灵活使用——获得优雅的设计 第十单元 大型系统中的模式运用 内容一:大型系统的及发展及核心技术  应用服务和数据服务分离  使用缓存改善避免数据库瓶颈  应用服务器集群和负载均衡避免运用服务器瓶颈  数据库读写分离  用CDN及分布式文件系统加速系统响应  分布式数据库系统及NoSQL运用  进行横向的业务拆分  分布式服务,打造自己的软件生态环境 内容二:系统的负载均衡模式  HTTP 重定向负载均衡  DNS 域名解析负载均衡  反向代理负载均衡  IP(NAT) 负载均衡  数据链路层负载均衡  负载均衡算法-hash一致性算法 内容三:系统的缓存模式  客户端缓存策略(浏览器缓存、本地Navtive代码缓存)  代理服务器缓存  CDN缓存  反向代理服务器缓存  Memcached 分布式缓存集群的访问模型  Memcached 分布式缓存集群的伸缩性方案  分布式缓存的一致性Hash 算法 典型案例分析:缓存策略如何应用在自己的实际项目中 内容四:分布式数据存储策略  分布式文件系统  数据存储服务器集群  NoSQL 数据库



如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表下载请点击

服务优势:
丰富专家资源,精准匹配相关行业,相关项目技术精英,面向用户实际需求,针对性培训或咨询,互动式交流,案例教学,精品小班,实际工程项目经验分享,快捷高效,节省时间与金钱,少走弯路与错路。

专家力量:
中国科学院相关研究所高级研究人员
西门子,TI,vmware,MSC,Ansys,MDI,Mentor, candence,Altium,Atmel 、Freescale,达索,华为等
大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关学历背景专业,理论素养高
多年实际项目实践,大型复杂项目实战案例分享,热情,乐于技术分享
针对客户实际需要,真实案例演示,互动式沟通,学有所值
报名表下载
联系我们 更多>>

咨询电话010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

微信号.jpg

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>