第1章 软件设计模式的概述\t1
1.1 软件设计模式及其发展简史\t1
1.1.1 模式与软件设计模式\t1
1.1.2 软件设计模式的产生与发展\t1
1.1.3 软件设计模式的基本特点\t2
1.2 软件设计模式的定义、基本要素及研究意义\t6
1.2.1 软件设计模式的定义\t6
1.2.2 基本要素\t6
1.2.3 研究意义\t7
1.3 GoF设计模式及其分类\t7
1.3.1 GoF设计模式\t7
1.3.2 创建型设计模式、结构型设计模式和行为型设计模式\t8
1.3.3 类模式与对象模式\t8
1.3.4 进一步分类\t8
1.4 软件设计模式的相关课程\t9
1.4.1 软件体系结构\t9
1.4.2 软件工程\t9
1.4.3 Java方向的系列课程\t9
习题\t11
第2章 UML类图及类间关系\t13
2.1 UML概述\t13
2.1.1 UML定义及发展简史\t13
2.1.2 UML建模技术的应用\t14
2.2 UML类图\t15
2.2.1 使用UML表示类\t15
2.2.2 UML类图绘制软件\t15
2.2.3 AmaterasUML插件的使用\t16
2.3 类间关系及其UML类图表示\t17
2.3.1 关联关系\t17
2.3.2 依赖关系\t19
2.3.3 泛化关系\t19
2.3.4 实现关系\t20
习题\t21
实验\t22
第3章 面向对象设计原则\t23
3.1 面向对象设计原则的概述\t23
3.2 开闭原则\t24
3.3 里氏代换原则\t24
3.4 依赖倒置原则\t25
3.5 合成-聚合复用原则\t25
3.6 单一职责原则\t27
3.7 迪米特法则\t28
3.8 接口隔离原则\t29
习题\t30
实验\t32
第4章 创建型设计模式\t33
4.1 工厂模式\t33
4.1.1 预备知识:XML解析与使用Java反射创建对象\t33
4.1.2 简单工厂模式\t38
4.1.3 工厂方法模式\t41
4.1.4 抽象工厂模式\t44
4.2 单例模式及其扩展\t49
4.2.1 单例模式\t49
4.2.2 懒汉式单例类、饿汉式单例类与线程安全\t52
4.3 原型模式及其扩展\t54
4.3.1 原型模式\t54
4.3.2 浅克隆与深克隆\t58
4.4 建造者模式及其扩展\t64
4.4.1 建造者模式\t64
4.4.2 使用钩子方法控制产品的建造过程\t67
4.4.3 在抽象建造者中组合产品\t69
习题\t72
实验\t74
第5章 结构型设计模式\t76
5.1 外观模式及应用\t76
5.1.1 外观模式\t76
5.1.2 使用抽象外观类可更好地满足开闭原则\t79
5.2 适配器模式\t82
5.2.1 类适配器模式\t83
5.2.2 对象适配器模式\t84
5.2.3 双向适配器模式\t85
5.3 组合模式\t87
5.4 代理模式及应用\t93
5.4.1 代理模式\t93
5.4.2 静态代理与动态代理\t96
5.4.3 JDK动态代理及应用\t96
5.4.4 CGLib动态代理\t100
5.4.5 远程代理、RMI与RPC\t102
5.5 桥接模式\t109
5.6 装饰模式\t112
5.7 享元模式及应用\t119
5.7.1 享元模式\t119
5.7.2 享元模式在JDK开发中的应用\t125
习题\t126
实验\t129
第6章 行为型设计模式\t132
6.1 策略模式\t132
6.2 模板方法模式及应用\t135
6.2.1 模板方法模式\t135
6.2.2 模板方法模式在Servlet组件开发中的应用\t138
6.3 备忘录模式\t141
6.4 观察者模式及应用\t146
6.4.1 观察者模式\t146
6.4.2 观察者模式的应用\t152
6.5 迭代器模式及应用\t153
6.5.1 迭代器模式\t153
6.5.2 迭代器模式在JDK集合框架中的应用\t156
6.6 命令模式及其应用\t157
6.6.1 命令模式\t157
6.6.2 智能家居遥控器\t160
6.6.3 日志功能与命令的撤销和恢复功能\t163
6.6.4 使用栈实现多次撤销与恢复\t165
6.6.5 联用命令模式和组合模式实现宏命令\t168
6.7 状态模式及应用\t171
6.7.1 状态模式\t171
6.7.2 状态模式与策略模式应用的比较\t175
6.8 职责链模式及其扩展\t180
6.8.1 职责链模式\t180
6.8.2 纯的职责链模式和不纯的职责链模式\t185
6.8.3 与状态模式比较\t185
6.9 中介者模式\t185
6.10 访问者模式\t188
6.11 解释器模式及应用\t193
6.11.1 基础知识:词法分析、语法分析与抽象语法树\t193
6.11.2 解释器模式\t195
6.11.3 模式的应用\t199
习题\t211
实验\t215
第7章 设计模式综合应用\t219
7.1 需求分析\t219
7.2 总体设计\t219
7.2.1 总体设计流程图\t219
7.2.2 模块设计\t219
7.2.3 界面设计\t220
7.3 功能设计及其设计模式分析\t222
7.3.1 使用简单工厂模式和单例模式管理绘图工具\t222
7.3.2 使用模板方法管理工具面板和颜色面板\t223
7.3.3 使用状态模式管理系统菜单\t226
7.3.4 使用迭代器模式存取图片文件\t227
7.3.5 使用备忘录模式管理编辑操作\t230
习题\t232
实验\t234
参考文献\t236