从60年代提出“软件危机”这一概念开始,直到今天仍然没有彻底解决,无数开发团队都不得不面对居高不下的项目失败率。软件工程这一概念仍然无法有效地落地,成为了信息化建设进一步发展的巨大瓶颈。
在架构方面,“如何真正创建弹性的高可用的软件架构”、“架构师的职责和需求之间的边界是什么”、“架构设计如何落地”等问题也横在众多开发团队的面前。在软件业从“砖混时代”向“框架时代”过渡的今天,这一矛盾日显突出。
主题 |
授课内容 |
备注 |
设计模式思想与困惑---你的了解设计模式吗? |
内容一:软件设计模式---模式到底是什么?价值在哪里?1.
什么是模式2.
为什么需要设计模式? 难道就为了面试吗?3.
设计模式能够给我们带来什么?4.
设计模式学习面临的困难和解决思路5.
从了解模式到正确应用模式1.
案例分析---某前台展现子系统,在使用模式前解决方案 和 使用模式后的对比内容二:软件设计模式本质—你真的知道模式背后的原理吗?1.
发现变化进行封装变化2.
把变化与不变必须分离3.
针对接口的编程,而不是针对实现4.
组合优于继承1.
案例分析—通过正反例子分析模式背后的本质内容三:什么是好的设计-----难道使用设计模式就是好的设计吗? 1.
什么是好的设计? 2.
难道不使用设计模式就是坏的设计吗?3.
为什么需求变化总是使你痛苦? 和你的设计有关系吗?4.
好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。5.
设计模式可以使你的设计更灵活,更易复用,更具可扩展性1.
案例分析—通过多种设计方案的对比, 那种更合适? |
|
设计模式应用策略1—面向对象思维 |
内容一:面向对象思维是模式基础1.
面向对象分析与设计的本质2.
面向对象设计思维与面向过程设计思维—职责驱动设计3.
抽象对象模型4.
封装对象模型5.
继承对象模型6.
多态对象模型7.
面向对象常见的错误认识—思考OO带来的价值8.
为什么学习设计模式需要面向对象思维9.
从面向对象到模式到再到真正的面向对象10.
案例分析—通过例子说明比较面向对象思维和面向过程思维的差别,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 !内容二:面向对象设计原则(principles)1.
依赖倒置原则(DIP)2.
开放封闭原则(OCP)3.
单一职责原则(SRP)4.
Liskov 替换原则(LSP)5.
接口隔离原则(ISP)6.
对象组合优于类继承7.
封装变化点8.
面向接口编程9.
案例分析—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 |
GOF23设计模式是建立在对面向对象技术深刻理解的基础之上的,本节深入讲解面向对象设计,几大经典的面向对象设计原则,OO对象模型,从各个角度奠定学习设计模式之核心基础 |
设计模式应用策略2—知道模式即使知道设计模式不一定成为一个优秀的设计师,但是不了解设计模式绝对不会成为优秀的设计师 |
内容一:知道模式 –你连设计模式都不了解, 还算是设计师吗?1.
了解模式-需要知道自己不知道2.
研读模式的关键4要素3.
创建型模式4.
行为型模式5.
结构型模式6.
该阶段经常遇到的应用问题和对策7.
案例分析—设计模式连连看, 你知道模式吗?
某公司设计模式考试题内容二:模式案例– 数据库连接池系统设计1.
介绍项目背景情况,如何应对将来的各种变化2.
学员分组进行设计3.
应用设计模式,如何改善设计4.
分析设计模式是否带来软件的可维护性5.
学习(Factory Method/Adapter/Proxy/Observer/Strategy等几种设计模式和设计原则) |
本节深入阐述GOF 23种经典设计模式(包括创建型模式、结构型模式、行为型模式),深入解析它们的意图、动因、原理、实现与应用实践。 |
设计模式应用策略3—临摹大师看看那帮牛B的大师他们怎样使用设计模式的 ,他们也是在滥用设计模式吗? |
内容一:研读经典系统—学习那些牛B的大师如何使用设计模式1.
学习设计模式后,可是无法使用在真实项目的症状2.
分析经典作品,重新思考设计模式的威力3.
研读设计模式的关键要素内容二:模式案例–Junit设计模式应用分析1.
Erich Gamma 和Kent Beck 的Junit2.
Junit架构思路(微内核模式)3.
Juint的设计, 哪些值得我们学习4.
设计JUnit的过程中是怎样应用设计模式的。5.
学习设计模式(Command/Composite/Template Method/ Adapter/Observer/Decorate )6.
通过研读经典学习到什么? |
|
设计模式应用策略4—你知道如何用模式去思考吗有时放弃模式更值得学习 |
内容一:用模式思考系统设计 1.
基于模式的设计系统2.
用模式思考的过程3.
模式的应用层次和组合应用模式4.
基于模式的方法和步骤内容二:放弃设计模式的智能—只要遵循原则,保持简单 1.
放弃模式更需要智能, 2.
设计需要的原则a)
重用原则b)
扩展原则c)
隔离原则d)
转接原则e)
保变原则3.
案例分析---怎样去除设计模式, 不用设计模式内容三:模式案例–缓存系统1.
项目系统背景和需求2.
缓存任何对象,任何java对象都可以缓存。3.
拥有全面的API--给你全面的程序来控制所有的缓存的特性。4.
永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。5.
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。6.
系统的设计思考过程7.
展示如何用模式,进行设计 |
|
|
|
|
|