软件设计精解与模式案例分析培训

软件设计精解与模式案例分析培训

课程介绍:

  2010年是<设计模式>一书出版15周年. 如今,对于很多人来说,设计模式已经成为开发标准词典的一部分.15年来,设计模式思想影响了整整一代软件从业者.而且可以预料,它的影响还将继续下去.可是目前国内的大部分程序员学习设计模式和原则之后,往往是不知道如何使用模式,或者滥用模式(言必称模式),最终放弃不用模式,这样三个阶段,最终导致设计模式思想还远没有真正广泛应用,更没有起到应有的作用,因而导致很多对设计模式的误解(学习设计模式无用论).该课程就是针对学习设计模式这3个经典错误问题而开设的.
  作为为一门高级课程,若内容缺乏实务便易流于抽象与空泛。 本课程除了深入剖析各种典型的设计模式之原理与结构外, 同时会抽取大量知名程序库中的设计模式,利用其源码辅助并加强原理讲解。并且结合讲师大量实际项目案例进行分析. 这种方式对于设计模式的学习有着极大效果。 与其它的仍然沿用传统模式目录方式逐一讲述每一模式的意图,结构,适应性等的培训和图书完全不同.
  艾威软件设计精解与模式案例分析培训课程1/3的时间介绍设计模式思想和原理,1/3时间案例,并且要求学员组合成小组进行现场设计. 最后1/3时间再介绍该案例的设计过程,讲师带领大家一起对设计结果进行分析,指出不”和谐”的地方,通过逐步运用模式,改善设计. 而不是把最完美的答案一下子放到学员的面前,让你佩服.并且分析为什么使用模式,而不是过度设计,为什么又要放弃模式. 因为了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程之中蕴藏着大智慧.培训时根据实际情况,可以安排学员自己的项目代码或者设计作为课程案例进行分析和设计.

培训对象:

  软件设计精解与模式案例分析培训课程注重实战,不尚空谈.讲师根据本人的学习过程和经验来介绍如何解决这些问题. 课程不仅仅介绍经典的GOF设计模式,而且涉及常见的其它模式和软件架构模式.
  软件设计精解与模式案例分析培训课程首次提出了解决设计模式如何应用的5个步骤。5个步骤针对应用设计模式的不同错误症状,解决如何应用模式.知道模式是什么和真正理解什么时候去应用模式,就完全是不同的境界.以上步骤,都借助于真实项目案例(不是简单的演示之类的Demo,而是真实的系统),展示如何在实际开发之中正确的选择和运用模式,在这些案例之中,在设计时应用模式能看到实实在在的效果(每个案例,均有PK使用之前和使用之后对比).

课程特色:

  软件设计精解与模式案例分析培训课程适合各类 IT/软件企业和研发机构的软件架构师、软件设计师、程序员。特别能够带着设计模式实践时的困惑和问题,效果最佳. 到时可以与讲师PK讨论,这样对你帮助会更大,收获也会更多.本课程不是设计模式入门级别课程, 不会目录式介绍每一模式的详细细节, 因此需要学员课前做好相关准备,最好已经具备模式概念和常见模式的基本知识.最好课前可以简单预习。

学员基础:

  由于软件设计精解与模式案例分析培训课程重点设计模式如何应用,不会过多时间学习设计模式基本概念/结构/意图等, 因此需要学员课前做好相关准备,以节约课程案例的思考时间。
模式类型 6个大型项目案例涉及软件原则和模式 备注
面向对象设计原则 单一职责原则 (SRP)  变化分离
“开-闭”原则(OCP)对可变性封装
里氏替换原则(LSP)  如何进行继承
接口隔离原则(ISP) 恰当的划分角色和接口
依赖倒转原则(DIP) 针对接口编程
 
GOF设计模式 Singleton模式/Builder模式/Simple Factory模式
Factory Method模式/ Strategy/Observer/Chain of Responsibility/Command/Template Method/Adapter/Proxy/Façade/Bridge/Decorator/Composite/Visitor
课程案例主要涉及15GOF常用设计模式,也重点学习这些模式
C嵌入式编程设计模式 基本的嵌入式设计模式/硬件代理模式/硬件适配器模式/中介者模式/观察者模式/去抖动模式/中断模式  
其它设计模式 Object Pool模式/Dependency Injection依赖注入/Null Object模式/Plug-In模式/Active Object模式/Abstract Server模式 虽然不属于GOF,但是经常在软件设计时使用.案例也涉及
架构模式 Pipe Filter架构模式/Layer架构模式/Microkernel Pattern/MVC/  

授课方式:

传统的面对面授课方式。

课程大纲:

主题 授课内容 备注
设计模式思想与困惑---你的了解设计模式吗? 内容一:软件设计模式---模式到底是什么?价值在哪里?
1. 什么是模式
2. 为什么需要设计模式? 难道就为了面试吗?
3. 设计模式能够给我们带来什么?
4. 设计模式学习面临的困难和解决思路
5. 从了解模式到正确应用模式
1. 案例分析---某电信业务系统,在使用模式前解决方案  使用模式后的对比
 
内容二:软件设计模式本质你真的知道模式背后的原理吗?
1. 发现变化进行封装变化
2. 把变化与不变必须分离
3. 针对接口的编程,而不是针对实现
4. 组合优于继承
1. 案例分析某电信认证项目设计分析,分析模式背后的本质
 
内容三:什么是好的设计-----难道使用设计模式就是好的设计吗? 
1. 什么是好的设计? 
2. 难道不使用设计模式就是坏的设计吗?
3. 为什么需求变化总是使你痛苦? 和你的设计有关系吗?
4. 好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。
5. 设计模式可以使你的设计更灵活,更易复用,更具可扩展性
1. 案例分析某电信项目4种设计方案的对比, 那种更合适?多种方案的对比
 
设计模式应用策略1—面向对象思维 内容一:面向对象思维是模式基础
1. 面向对象分析与设计的本质
2. 面向对象设计思维与面向过程设计思维—职责驱动设计
3. 抽象本质
4. 封装本质
5. 继承本质
6. 多态本质
7. 面向对象常见的错误认识—思考OO带来的价值
8. 为什么学习设计模式需要面向对象思维
9. 从面向对象到模式到再到真正的面向对象
10. 案例分析ERP项目, 使用面向对象设计和过程化设计 PK,,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 !
 
内容二:面向对象设计原则(principles
1. 依赖倒置原则(DIP)
2. 开放封闭原则(OCP)
3. 单一职责原则(SRP)
4. Liskov 替换原则(LSP)
5. 接口隔离原则(ISP)
6. 案例分析每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑
GOF23设计模式是建立在对面向对象技术深刻理解的基础之上的,本节深入讲解面向对象设计,几大经典的面向对象设计原则,OO对象模型,从各个角度奠定学习设计模式之核心基础
设计模式应用策略2—嵌入式C语言如何使用设计模式
 
通过将面向对象程序设计技术与C语言相结合,以提升C语言的简洁性、易读性和重复使用性,进而提升嵌入式系统分析及架构设计的技术能力。
内容一:OO思想与标准C语言应用
1. 了解模式-需要知道自己不知道
2. C程序的基本组成
3. C语言的数据类型
4. C的数据运算
5. 结构(struct)及动态内存分配
6. 外部变量与静态函数
7. 认识对象(Object)
8. 对象沟通方法
9. 对象沟通实例
10. 认识接口(Interface)
11. 接口应用实例
12. 案例分析演示C语言如何实现OO代码
 
内容二:嵌入式C语言应用设计模式
1. 面向对象的视角,重新审视嵌入式系统,全面总结了嵌入式系统中常见的以及关键的设计模式
2. 嵌入式C语言应用设计模式的不同
3. 以下以嵌入式项目为案例分析,应用设计模式
4. 硬件代理模式
5. 硬件适配器模式
6. 中介者模式
7. 观察者模式
8. 去抖动模式
9. 中断模式
案例分析演示C语言如何应用设计模式
本节深入阐述GOF 23种经典设计模式(包括创建型模式、结构型模式、行为型模式),深入解析它们的意图、动因、原理、实现与应用实践。
设计模式应用策略3—临摹大师
 
 
看看那帮牛B的大师他们怎样使用设计模式的 ,他们也是在滥用设计模式吗
内容一:研读经典系统学习那些大牛如何使用设计模式
1. 学习设计模式后,可是无法使用在真实项目的症状
2. 分析经典作品,重新思考设计模式的威力
3. 研读设计模式的关键要素
 
内容二:模式案例Junit设计模式应用分析
1. Erich Gamma 和Kent Beck 的Junit
2. Junit架构思路(微内核模式)
3. Juint的设计, 哪些值得我们学习
4. 设计JUnit的过程中是怎样应用设计模式的。
5. 学习设计模式(Command/Composite/Template Method/ Adapter/Observer/Decorate )
6. 通过研读经典学习到什么?
 
设计模式应用策略4 你知道如何用模式去思考吗
 
 
有时放弃模式更值得学习
内容一:用模式思考系统设计
1. 基于模式的设计系统
2. 用模式思考的过程
3. 模式的应用层次和组合应用模式
4. 基于模式的方法和步骤
 
 
内容:模式案例XXXX缓存系统
1. 项目系统背景和需求
2. 缓存任何对象,任何java对象都可以缓存。
3. 拥有全面的API--给你全面的程序来控制所有的缓存的特性。
4. 永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。
5. 支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
6. 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
7. 系统的设计思考过程
8. 展示如何用模式,进行设计
9. 学习设计模式()
 
设计模式应用策略5—重构到模式
 
通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。
内容一:重构到模式-  
1. 设计坏味道概述
2. 重构思想
3. 理解如何结合重构和模式;
4. 用模式导向的重构(pattern-directed refactoring)改善既有代码的设计;
5. 找出需要进行模式导向重构的代码段;
6. 了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。
7. 一组坏味 (也就是问题),表示需要进行模式导向的重构;
8. 实现同一模式的不同方式的示例;
9. 什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。
10. 常见设计模式的重构演化的过程
1. 案例分析通过一个大型电信系统案例分析, 解决如何通过重构引入设计模式
11. 
 
内容二:案例- 遗留系统如何使用设计模式
1. 拒绝退化—“首先不要伤害”
2. 关注点分离
3. . 通过案例分析,如何修改遗留代码,而不破坏现有系统代码结构,引入设计模式
2. 案例分析通过一个系统案例分析, 如何在维护遗留系统时, 通过分离制作, 关注点分离, 实现对遗留系统不伤害,从而引入设计模式
 
 
内容三:案例- 某电信管理子系统的设计
4. 介绍项目需求情况,进行设计
5. 通过重构逐步实现设计模式
6. Framework 设计思想—好莱坞原则
7. 学习设计模式(Factory Method, Template Method, Composite, Chain of Responsibility )
“虽然软件的演化,利用重构从而得到模式”是有效应用设计模式的实践准则。本节以一些重构技巧来展示如何通过演化的方式来步步达至设计模式,从而帮助学员更好地掌握如何在软件设计中运用设计模式,发现更多设计模式。
设计模式应用策略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- 综合应用分析 内容一:大型系统的设计案例分析, 介绍如何预先应用模式,以及如何在第3版本重构时导入模式, 已经在后期维护时应用模式
1. ××某省移动线路资源维护系统的背景介绍
2. 系统需求分析
3. 如何根据应用系统特点, 和变化与不变等原因,引入模式
4. 根据应用功能,导入设计模式
5. 第1版本上线时的系统设计分析
6. 第1版本,系统设计时遗留的问题, 设计不足, 缺陷等分析
7. 第2版本, 由于增加新功能导致的严重问题分析
8. 系统出现很多设计不足
9. 第3版本, 由于增加新功能导致的严重问题分析
10. 系统开始引入重构,系统的坏味道, 以及重构,分析在重构是如何使用重构
11. 分析第4版本的系统设计
系统在后续维护过程之中的, 设计情况。 以及如何在维护时期进行应用模式
 
设计模式应用策略8-设计模式总结 内容一:设计模式总结
1. 设计模式不是银弹
2. 设计模式真正给设计者带来的价值
3. 设计模式仅仅是工具
4. 超越设计模式(LJ)
 

【艾威(中国)】简介:

  艾威(AVTECH)总部 设在美国NEW JERSEY,是北美排行第一的专业培训机构,设有4大分校,数十个培训点遍布北美、西欧和东亚;2000年进入中国,以培养国际化的中高端信息人才为己任,专注于国际前沿的新技术研发与信息科技新兴行业的开拓教育。
  ● 艾威培训(Avtech Institute of Technology),源于美国,始于1998.
  ● 2003年成为国际项目管理协会PMI授权的全球(PMP,PGMP,ACP,PBA)教育机构
  ● 2008年成为国际需求管理协会IIBA授权的全球(CCBA,CBAP)教育机构
  ● 2012年成为IT服务管理官方EXIN授权的ITILITIL EXPERT,Prince2,EXIN Agile Scrum Master教育机构
  ● 2016年成为国际信息审计协会ISACA授权的CISA,CISM,CRISC,CGEIT,COBIT教育机构
  ● 2017年成为The Open Group授权的TOGAF企业架构的官方培训机构。
  ● 2017年成为EPI 授权的数据中心CDCP培训机构,华东地区唯一CDCP授权培训机构,同时也是CDCP认证考试考场。