架构师
其他
软件设计
推荐课程
average > 0 ? $model->average . '分' : '10.0分' ?>

软件设计模式最佳实战

K. Kang

开发部总监

北京航空航天大学,硕士。
毕业后即进入北大方正进行软件开发,先后在北大方正技术研究院、方正电子、方正电子政务科技有限公司、方正国际、明博教育科技有限公司工作,担任高级程序员、高级系统分析员、系统架构师、开发部总监等职务;拥有10多项国家发明专利。5年培训经验,主要从事企业IT软件设计培训及咨询。在安博教育等机构任特聘讲师,信产部计算机技术培训中心高级技术顾问,案例丰富,来源于实践,从实际项目出发,擅长用直白的语言说明复杂的原理。
一直在软件的一线工作,在软件设计及编码上有丰富的经验,善于从实际出发,将各种理论上的规范和技巧落地,变成实际项目开发中,易于接受和使用的原则和方式。在其带领过的研发团队中,都以形成了良好的软件风格和高质量的代码而著称。康老师在对系统进行划分、子系统和类设计方面有丰富的经验,善于规划系统职责,在系统分析、架构设计、模块设计,模块职责分配等方面进行合理的划分及平衡有着深厚的功底和丰富的实践经验。
项目经历
具有15年从事IT行业的软件开发、系统架构设计与分析经验,熟悉中国企业的需求,经历过多种文化氛围与组织形态,对大型项目、系统工程管理有着深入的实践与体会。且一直工作在大型软件开发、系统架构设计实际项目的第一线,主持过政府、金税工程、中国军队(总参、总后、二炮)等机构的复杂信息化项目设计,在实际工作中积累了丰富的项目实际经验和系统架构设计分析经验。主持过的项目包括奥运首都机场奥运福娃机器人项目;优课数字化教学应用系统;美国外包项目、国税总局金税工程信息化项目;方正奥思多媒体创作工具;网络雷达数据采集分析系统;分布式电子图书管理系统等。
近期授课经历

先后为IBM、洛基亚(8次)、艾默生、梅特勒.托利多、阿里软件、京东、中国联通、中国电信、用友软件、中石油天然气管道公司、中国移动、恒生电子、西南电信、三五互联、中金在线、浪潮集团、海关总署、中国科学院计算机网络信息中心、中国航天研究院、上海盛大网络、上海证券研究所、上海携程计算机、雅马哈信息系统有限公司、厦门航空、通化钢铁集团、总参、21世纪、南京大汉网络、等近百家企事业单位。

北京航空航天大学,硕士。 毕业后即进入北大方正进行软件开发,先后在北大方正技术研究院、方正电子、方正电子政务科技有限公司、方正国际、明博教育科技有限公司工作,担任高级程序员、高级系统分析员、系统架构师、开发部总监等职务;拥有10多项国家发明专利。5年培训经验,主要从事企业IT软件设计培训及咨询。在安博教育等机构任特聘讲师,信产部计算机技术培训中心高级技术顾问,案例丰富,来源于实践,从实际项目出发,擅长用直白的语言说明复杂的原理。 一直在软件的一线工作,在软件设计及编码上有丰富的经验,善于从实际出发,将各种理论上的规范和技巧落地,变成实际项目开发中,易于接受和使用的原则和方式。在其带领过的研发团队中,都以形成了良好的软件风格和高质量的代码而著称。康老师在对系统进行划分、子系统和类设计方面有丰富的经验,善于规划系统职责,在系统分析、架构设计、模块设计,模块职责分配等方面进行合理的划分及平衡有着深厚的功底和丰富的实践经验。 项目经历 具有15年从事IT行业的软件开发、系统架构设计与分析经验,熟悉中国企业的需求,经历过多种文化氛围与组织形态,对大型项目、系统工程管理有着深入的实践与体会。且一直工作在大型软件开发、系统架构设计实际项目的第一线,主持过政府、金税工程、中国军队(总参、总后、二炮)等机构的复杂信息化项目设计,在实际工作中积累了丰富的项目实际经验和系统架构设计分析经验。主持过的项目包括奥运首都机场奥运福娃机器人项目;优课数字化教学应用系统;美国外包项目、国税总局金税工程信息化项目;方正奥思多媒体创作工具;网络雷达数据采集分析系统;分布式电子图书管理系统等。 近期授课经历 先后为IBM、洛基亚(8次)、艾默生、梅特勒.托利多、阿里软件、京东、中国联通、中国电信、用友软件、中石油天然气管道公司、中国移动、恒生电子、西南电信、三五互联、中金在线、浪潮集团、海关总署、中国科学院计算机网络信息中心、中国航天研究院、上海盛大网络、上海证券研究所、上海携程计算机、雅马哈信息系统有限公司、厦门航空、通化钢铁集团、总参、21世纪、南京大汉网络、等近百家企事业单位。

课程费用

5800.00 /人

课程时长

2

成为教练

课程简介

本课程涵盖 面向对象设计原则、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 数据库
第一单元 优秀系统与不佳系统的辨析——设计模式初探
内容一:什么是优秀的设计的设计
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 数据库

课程费用

5800.00 /人

课程时长

2

预约体验票 我要分享

近期公开课推荐

近期公开课推荐

提交需求