没有合适的资源?快使用搜索试试~ 我知道了~
王桂林--设计模式.pdf


试读
113页
需积分: 0 6 下载量 136 浏览量
更新于2024-03-23
1
收藏 3.09MB PDF 举报
根据提供的文件信息,我们可以深入探讨设计模式的相关知识点。设计模式是一种在特定情境下解决软件设计问题的标准化解决方案,它能够帮助开发人员编写出更高效、更易于维护的代码。
### 1. 什么是设计模式
#### 1.1. 历史渊源
设计模式的概念最早可以追溯到建筑领域,建筑师克里斯托弗·亚历山大(Christopher Alexander)在他的著作《A Pattern Language》中首次提出了“模式语言”的概念。后来,这一理念被引入到软件工程领域。1995年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四位作者合著了《Design Patterns: Elements of Reusable Object-Oriented Software》一书,该书被广泛认为是设计模式领域的经典之作,四位作者也因此被称为“Gang of Four”(GOF)。
#### 1.2. 如何陈述模式
设计模式通常包括以下几个方面:
- **模式名称**:简洁明了地概括模式的核心思想。
- **问题**:描述在什么情况下使用该模式。
- **解决方案**:提供解决问题的具体策略。
- **效果**:描述模式带来的好处及可能产生的副作用。
- **结构**:通过类图或序列图等图形化工具展示模式的实现细节。
#### 1.3. 学习模式的意义
学习设计模式对软件开发者来说至关重要:
- **提高代码质量**:遵循设计模式可以编写出更优雅、更易于维护的代码。
- **促进团队协作**:使用共同认可的设计模式有助于提高团队成员之间的沟通效率。
- **加快开发进度**:设计模式为常见的编程问题提供了现成的解决方案,避免重复造轮子。
#### 1.4. 设计模式学习的建议
##### 1.4.1. GOF 在给我们的建议是这样的:
GOF建议从实际问题出发,通过理解和应用设计模式来解决这些问题。同时强调,在实践中不断探索和总结,才能真正掌握设计模式。
##### 1.4.2. 推荐书目
除了经典的《Design Patterns: Elements of Reusable Object-Oriented Software》,还有许多其他优秀的参考书籍,例如:
- 《Head First Design Patterns》:这本书以轻松幽默的方式介绍设计模式,适合初学者。
- 《Effective Java》:虽然主要聚焦于Java编程,但也包含了大量关于面向对象设计的原则和最佳实践。
### 2. 设计模式的原则
#### 2.1. 单一职责原则(Single Responsibility Principle - SRP)
##### 2.1.1. 定义
单一职责原则指出一个类应该只有一个引起其变化的原因。也就是说,一个类只负责完成一项职责。
##### 2.1.2. 问题由来
如果一个类承担了多个职责,则当其中一个职责发生变化时,可能会对其他职责产生影响,导致代码难以维护。
##### 2.1.3. 解决方案
为了遵循单一职责原则,可以通过以下方式重构代码:
- 将类分解为更小的、功能更单一的类。
- 使用组合或聚合关系,将相关的类组织在一起,形成一个松散耦合的系统。
#### 2.2. 开闭原则(Open Closed Principle - OCP)
##### 2.2.1. 定义
开闭原则是指软件实体应该是可扩展的但不可修改的。这意味着实体可以扩展其行为而无需修改源代码。
##### 2.2.2. 问题由来
随着软件系统的演进,需求会不断变化。如果不遵循开闭原则,每次增加新功能都可能导致原有代码的大量修改,从而增加出错的风险。
##### 2.2.3. 解决方案
为了遵循开闭原则,可以采用以下策略:
- 使用继承和多态性来扩展行为,而不是直接修改现有代码。
- 设计接口或抽象类来定义固定的行为模板,具体实现留给子类去完成。
通过以上分析,我们可以看出设计模式对于软件开发的重要性。它不仅能够提高代码的质量,还能促进团队之间的协作,加快项目的开发进度。因此,深入学习并熟练掌握设计模式是每一个软件开发者都应该努力的方向。

原创作者: 王桂林 技术交流:QQ 329973169
版本信息:
版本
修订人
审阅人
时间
组织
V1.0
王桂林
2016.04.02
V1.1
王桂林
2017.02.01
山东能众软件有限公司
更多学习:

原创作者: 王桂林 技术交流:QQ 329973169
更多视频:http://edu.nzhsoft.cn
1
1. 什么是设计模式
............................................................................................................................
1
1.1. 历史渊源
.............................................................................................................................
1
1.2. 如何陈述模式
.....................................................................................................................
2
1.3. 学习模式的意义
.................................................................................................................
2
1.4. 设计模式学习的建议
.........................................................................................................
3
1.4.1. GOF 在给我们的建议是这样的:
..........................................................................
3
1.4.2. 推荐书目
..................................................................................................................
3
2. 设计模式的原则
............................................................................................................................
4
2.1. 单一职责原则(Single Responsibility Principle - SRP)
.........................................................
4
2.1.1. 定义
..........................................................................................................................
4
2.1.2. 问题由来
..................................................................................................................
4
2.1.3. 解决方案
..................................................................................................................
4
2.2. 开闭原则(Open Closed Principle - OCP)
............................................................................
4
2.2.1. 定义
..........................................................................................................................
4
2.2.2. 问题由来
..................................................................................................................
4
2.2.3. 解决方案
..................................................................................................................
4
2.3. 依赖倒置原则(Dependence Inversion Principle - DIP)
......................................................
4
2.3.1. 定义
..........................................................................................................................
4
2.3.2. 问题由来
..................................................................................................................
4
2.3.3. 解决方案
..................................................................................................................
5
2.3.4. 代码示范
..................................................................................................................
5
2.4. 接口隔离原则(Interface Segregation Principle - ISP)
........................................................
6
2.4.1. 定义
..........................................................................................................................
6
2.4.2. 问题由来
..................................................................................................................
6
2.4.3. 解决方案
..................................................................................................................
7
2.4.4. 示例
..........................................................................................................................
7
2.5. 里氏替换原则(Liskov Substitution Principle - LSP)
............................................................
9
2.5.1. 定义
..........................................................................................................................
9
2.5.2. 问题由来
................................................................................................................
10
2.5.3. 解决方案
................................................................................................................
10
2.5.4. 代码示范
................................................................................................................
10
3. UML 类图关系
..............................................................................................................................
12
3.1. 类图关系的由来
...............................................................................................................
12
3.1.1. 面向过程
................................................................................................................
12
3.1.2. 面向对象
................................................................................................................
12
3.2. 类间关系综述
...................................................................................................................
12
3.2.1. 纵向
........................................................................................................................
12
3.2.2. 横向
........................................................................................................................
12
3.2.3. 关系规范
................................................................................................................
13
4. 类类关系正解
..............................................................................................................................
14
4.1. Generalization(泛化)
..........................................................................................................
14
4.1.1. 泛化关系
................................................................................................................
14
4.1.2. 箭头指向
................................................................................................................
14
4.1.3. 类图关系
................................................................................................................
14

原创作者: 王桂林 技术交流:QQ 329973169
更多视频:http://edu.nzhsoft.cn
2
4.1.4. 示例代码
................................................................................................................
14
4.2. Interface Realization(实现)
................................................................................................
14
4.2.1. 实现关系
................................................................................................................
14
4.2.2. 箭头指向
................................................................................................................
14
4.2.3. 类图关系
................................................................................................................
15
4.2.4. 示例代码
................................................................................................................
15
4.3. Composition(组合关联)
.....................................................................................................
15
4.3.1. 组合关系
................................................................................................................
15
4.3.2. 箭头及指向
............................................................................................................
15
4.3.3. 类图关系
................................................................................................................
15
4.3.4. 示例代码
................................................................................................................
16
4.4. Aggregation(聚合关联)
......................................................................................................
16
4.4.1. 聚合关系
................................................................................................................
16
4.4.2. 箭头及指向
............................................................................................................
16
4.4.3. 类图关系
................................................................................................................
16
4.4.4. 组合与聚合区分
....................................................................................................
16
4.4.5. 代码示例
................................................................................................................
17
4.5. Association(普通关联)
.......................................................................................................
18
4.5.1. 关联关系
................................................................................................................
18
4.5.2. 箭头及指向
............................................................................................................
18
4.5.3. 类图关系
................................................................................................................
18
4.5.4. 示例代码
................................................................................................................
18
4.6. Dependency(依赖关联)
.....................................................................................................
20
4.6.1. 依赖关系
................................................................................................................
20
4.6.2. 箭头及指向
............................................................................................................
20
4.6.3. 类图关系
................................................................................................................
21
4.6.4. 示例代码
................................................................................................................
21
4.7. 综合评述
...........................................................................................................................
22
4.7.1. 综合训练
................................................................................................................
22
5. Singleton 单例模式
.......................................................................................................................
24
5.1. 定义
...................................................................................................................................
24
5.2. 类图关系
...........................................................................................................................
24
5.3. 实例讲解
...........................................................................................................................
24
5.3.1. 实现
........................................................................................................................
24
5.4. 拓展实战
...........................................................................................................................
25
5.4.1. 全局配置文件
........................................................................................................
25
5.4.2. Cocos 中的导演
......................................................................................................
26
6. Observer 观察者模式
...................................................................................................................
27
6.1. 定义
...................................................................................................................................
27
6.2. 类图关系
...........................................................................................................................
27
6.3. 实例讲解
...........................................................................................................................
28
6.3.1. 引例
........................................................................................................................
28
6.3.2. 应用场景
................................................................................................................
30
6.3.3. 实战代码
................................................................................................................
30

原创作者: 王桂林 技术交流:QQ 329973169
更多视频:http://edu.nzhsoft.cn
3
6.3.4. Cocos 中的 EventListener 与_eventDispatcher
....................................................
33
7. Strategy 策略模式
.........................................................................................................................
35
7.1. 定义
...................................................................................................................................
35
7.2. 类图关系
...........................................................................................................................
35
7.3. 实例讲解
...........................................................................................................................
36
7.3.1. 应用场景
................................................................................................................
36
7.3.2. 实战代码
................................................................................................................
36
7.3.3. 延深阅读
................................................................................................................
38
7.4. 拓展实战
...........................................................................................................................
40
7.4.1. 计算器与算法设置
...............................................................................................
40
7.4.2. 汽车与发动机档位
...............................................................................................
40
8. Proxy 代理模式
.............................................................................................................................
41
8.1. 定义
...................................................................................................................................
41
8.2. 类图关系
...........................................................................................................................
41
8.3. 实例讲解
...........................................................................................................................
42
8.3.1. 引例
........................................................................................................................
42
8.3.2. 虚代理
....................................................................................................................
43
8.4. 实战
...................................................................................................................................
45
8.4.1. 智能代理
................................................................................................................
45
8.4.2. 保护代理
................................................................................................................
47
9. Decorator 装饰模式
......................................................................................................................
49
9.1. 定义
...................................................................................................................................
49
9.2. 类图关系
...........................................................................................................................
50
9.3. 实例讲解
...........................................................................................................................
51
9.3.1. 引例
........................................................................................................................
51
9.3.2. 应用场景
................................................................................................................
52
9.3.3. 图示分析
................................................................................................................
53
9.3.4. 实战分析
................................................................................................................
53
10. Adapter 适配器模式
...................................................................................................................
56
10.1. 定义
.................................................................................................................................
56
10.2. 类图关系
.........................................................................................................................
57
10.3. 实例讲解
.........................................................................................................................
57
10.3.1. 引例(披着羊皮的狼)
...........................................................................................
57
10.3.2. 实战分析
..............................................................................................................
59
10.3.3. 实战代码
..............................................................................................................
59
11. Bridge 桥接模式
.........................................................................................................................
62
11.1. 定义
.................................................................................................................................
62
11.2. 类图关系
.........................................................................................................................
62
11.3. 实例讲解
.........................................................................................................................
62
11.3.1. 应用场分析
..........................................................................................................
62
11.3.2. 实战代码
..............................................................................................................
63
12. Factory 工厂模式
........................................................................................................................
66
12.1. 定义
.................................................................................................................................
66
12.2. 类图关系
.........................................................................................................................
66
剩余112页未读,继续阅读
资源推荐
资源评论
117 浏览量
2019-03-22 上传
129 浏览量
2018-06-15 上传

200 浏览量
145 浏览量

109 浏览量

156 浏览量
2020-04-15 上传
2018-03-09 上传
321 浏览量
资源评论



八月的雨季997
- 粉丝: 926
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- update9-20250731.5.209.slice.img.7z.001.pd
- 基于COMSOL仿真的光学波导传输技术研究:光纤波导三维弯曲、模场分布及损耗分析
- 基于距离和方位的多智能体编队分布式控制:原理、仿真与稳定性分析 - 多智能体系统
- 基于MATLAB Simulink的高频隔离DAB-双有源全桥DC-DC变换器仿真模型,实现电压电流双闭环与ZVS软开关,功率双向流动的学习交流使用 MATLAB
- 基于S7-200 PLC和MCGS组态的灌装贴标生产线系统解析 梯形图程序、接线图原理图和组态画面
- CarSim与Simulink联合仿真实现基于MPC的超车换道路径动态规划及实时检测
- Django框架多模态知识图谱智能旅游推荐系统Python源码SQL数据库详细注释毕设新项目
- 崔帕斯T1080电脑调音软件下载
- AI辅导员问答信息word文档
- 番茄钟html版的源码
- update9-20250731.5.209.slice.img.7z.002
- 基于 OpenMV 和 STM32 的循迹小车
- 崔帕斯T1980电脑调音软件下载
- 基于COMSOL仿真的光学手性BIC在光子晶体板中的连续域束缚态及琼斯矩阵透射谱分析
- 电力电子领域LLC谐振变换器Simulink仿真的电压电流双环竞争控制策略及其实现 LLC谐振变换器 说明
安全验证
文档复制为VIP权益,开通VIP直接复制
