本书系统地介绍了软件设计模式的基础知识和23种GoF设计模式,结构合理,共分7章,依次包括设计模式概述、UML类图及类间关系、面向对象的七大设计原则、5种创建型设计模式、7种结构型设计模式、11种行为型设计模式和设计模式综合训练。本书逻辑性极强,对每种设计模式进行了系统的介绍,依次包括模式动机、模式结构与角色分析、模式实例解析和模式效果分析。配套的课程网站包括了课程学习指导、上机实验指导、课件和课程档案文件下载等,配套的数字资源可方便学生自主学习。
张凯,武汉科技大学计算机学院教授,主要从事多目标进化算法、DNA分子计算、虚拟现实技术等领域的研究。
第1章 软件设计模式的概述 1
1.1 软件设计模式及其发展简史 1
1.1.1 模式与软件设计模式 1
1.1.2 软件设计模式的产生与发展 1
1.1.3 软件设计模式的基本特点 2
1.2 软件设计模式的定义、基本要素及研究意义 6
1.2.1 软件设计模式的定义 6
1.2.2 基本要素 6
1.2.3 研究意义 7
1.3 GoF设计模式及其分类 7
1.3.1 GoF设计模式 7
1.3.2 创建型设计模式、结构型设计模式和行为型设计模式 8
1.3.3 类模式与对象模式 8
1.3.4 进一步分类 8
1.4 软件设计模式的相关课程 9
1.4.1 软件体系结构 9
1.4.2 软件工程 9
1.4.3 Java方向的系列课程 9
习题 11
第2章 UML类图及类间关系 13
2.1 UML概述 13
2.1.1 UML定义及发展简史 13
2.1.2 UML建模技术的应用 14
2.2 UML类图 15
2.2.1 使用UML表示类 15
2.2.2 UML类图绘制软件 15
2.2.3 AmaterasUML插件的使用 16
2.3 类间关系及其UML类图表示 17
2.3.1 关联关系 17
2.3.2 依赖关系 19
2.3.3 泛化关系 19
2.3.4 实现关系 20
习题 21
实验 22
第3章 面向对象设计原则 23
3.1 面向对象设计原则的概述 23
3.2 开闭原则 24
3.3 里氏代换原则 24
3.4 依赖倒置原则 25
3.5 合成-聚合复用原则 25
3.6 单一职责原则 27
3.7 迪米特法则 28
3.8 接口隔离原则 29
习题 30
实验 32
第4章 创建型设计模式 33
4.1 工厂模式 33
4.1.1 预备知识:XML解析与使用Java反射创建对象 33
4.1.2 简单工厂模式 38
4.1.3 工厂方法模式 41
4.1.4 抽象工厂模式 44
4.2 单例模式及其扩展 49
4.2.1 单例模式 49
4.2.2 懒汉式单例类、饿汉式单例类与线程安全 52
4.3 原型模式及其扩展 54
4.3.1 原型模式 54
4.3.2 浅克隆与深克隆 58
4.4 建造者模式及其扩展 64
4.4.1 建造者模式 64
4.4.2 使用钩子方法控制产品的建造过程 67
4.4.3 在抽象建造者中组合产品 69
习题 72
实验 74
第5章 结构型设计模式 76
5.1 外观模式及应用 76
5.1.1 外观模式 76
5.1.2 使用抽象外观类可更好地满足开闭原则 79
5.2 适配器模式 82
5.2.1 类适配器模式 83
5.2.2 对象适配器模式 84
5.2.3 双向适配器模式 85
5.3 组合模式 87
5.4 代理模式及应用 93
5.4.1 代理模式 93
5.4.2 静态代理与动态代理 96
5.4.3 JDK动态代理及应用 96
5.4.4 CGLib动态代理 100
5.4.5 远程代理、RMI与RPC 102
5.5 桥接模式 109
5.6 装饰模式 112
5.7 享元模式及应用 119
5.7.1 享元模式 119
5.7.2 享元模式在JDK开发中的应用 125
习题 126
实验 129
第6章 行为型设计模式 132
6.1 策略模式 132
6.2 模板方法模式及应用 135
6.2.1 模板方法模式 135
6.2.2 模板方法模式在Servlet组件开发中的应用 138
6.3 备忘录模式 141
6.4 观察者模式及应用 146
6.4.1 观察者模式 146
6.4.2 观察者模式的应用 152
6.5 迭代器模式及应用 153
6.5.1 迭代器模式 153
6.5.2 迭代器模式在JDK集合框架中的应用 156
6.6 命令模式及其应用 157
6.6.1 命令模式 157
6.6.2 智能家居遥控器 160
6.6.3 日志功能与命令的撤销和恢复功能 163
6.6.4 使用栈实现多次撤销与恢复 165
6.6.5 联用命令模式和组合模式实现宏命令 168
6.7 状态模式及应用 171
6.7.1 状态模式 171
6.7.2 状态模式与策略模式应用的比较 175
6.8 职责链模式及其扩展 180
6.8.1 职责链模式 180
6.8.2 纯的职责链模式和不纯的职责链模式 185
6.8.3 与状态模式比较 185
6.9 中介者模式 185
6.10 访问者模式 188
6.11 解释器模式及应用 193
6.11.1 基础知识:词法分析、语法分析与抽象语法树 193
6.11.2 解释器模式 195
6.11.3 模式的应用 199
习题 211
实验 215
第7章 设计模式综合应用 219
7.1 需求分析 219
7.2 总体设计 219
7.2.1 总体设计流程图 219
7.2.2 模块设计 219
7.2.3 界面设计 220
7.3 功能设计及其设计模式分析 222
7.3.1 使用简单工厂模式和单例模式管理绘图工具 222
7.3.2 使用模板方法管理工具面板和颜色面板 223
7.3.3 使用状态模式管理系统菜单 226
7.3.4 使用迭代器模式存取图片文件 227
7.3.5 使用备忘录模式管理编辑操作 230
习题 232
实验 234
参考文献 236