第1章 初识设计模式 1
1.1 设计模式概念 2
1.2 设计模式简史 2
1.3 设计模式要素 3
1.4 设计模式分类 5
1.4.1 创建型 5
1.4.2 结构型 6
1.4.3 行为型 7
小结 7
练习 8
第2章 六大原则 9
2.1 单一职责原则 10
2.1.1 单一职责原则的定义 10
2.1.2 单一职责原则的应用 11
2.2 里氏替换原则 14
2.2.1 里氏替换原则的定义 14
2.2.2 里氏替换原则的应用 15
2.3 依赖倒置原则 17
2.3.1 依赖倒置原则的定义 17
2.3.2 依赖倒置原则的应用 18
2.4 接口隔离原则 20
2.4.1 接口隔离原则的定义 20
2.4.2 接口隔离原则的应用 21
2.5 迪米特法则 24
2.5.1 迪米特法则的定义 24
2.5.2 迪米特法则的应用 24
2.6 开闭原则 26
2.6.1 开闭原则的定义 26
2.6.2 开闭原则的应用 27
小结 31
练习 31
第3章 创建型模式 33
3.1 创建型模式简述 34
3.2 单例模式 34
3.2.1 现实场景:快递你能一起来么 34
3.2.2 单例模式的定义 34
3.2.3 单例模式的应用 36
3.2.4 单例模式的实例 38
3.3 工厂方法模式 40
3.3.1 现实生活场景:给女朋友的礼物 40
3.3.2 工厂方法模式的定义 41
3.3.3 工厂方法模式的应用 43
3.3.4 工厂方法模式的实例 44
3.4 抽象工厂模式 47
3.4.1 现实场景:游戏无间道 47
3.4.2 抽象工厂模式的定义 48
3.4.3 抽象工厂模式的应用 48
3.4.4 抽象工厂模式的实例 49
3.5 建造者模式 52
3.5.1 现实场景:魅族与华为手机的PK 52
3.5.2 建造者模式的定义 53
3.5.3 建造者模式的应用 54
3.5.4 建造者模式的实例 55
3.6 原型模式 60
3.6.1 现实场景:通知学生参加讲座 60
3.6.2 原型模式的定义 61
3.6.3 原型模式的应用 62
3.6.4 原型模式的实例 63
小结 65
练习 65
第4章 结构型模式 67
4.1 结构型模式简述 68
4.2 代理模式 68
4.2.1 现实场景:万能抢票神器 68
4.2.2 代理模式的定义 68
4.2.3 代理模式的应用 70
4.2.4 代理模式的实例 71
4.3 装饰模式 73
4.3.1 现实场景:装饰新车 73
4.3.2 装饰模式的定义 74
4.3.3 装饰模式的应用 75
4.3.4 装饰模式的实例 76
4.4 适配器模式 78
4.4.1 现实场景:人工翻译 78
4.4.2 适配器模式的定义 78
4.4.3 适配器模式的应用 80
4.4.4 适配器模式的实例 80
4.5 组合模式 81
4.5.1 现实场景:我的设计 81
4.5.2 组合模式的定义 81
4.5.3 组合模式的应用 83
4.5.4 组合模式的实例 84
4.6 桥梁模式 88
4.6.1 现实场景:调味搭配 88
4.6.2 桥梁模式的定义 88
4.6.3 桥梁模式的应用 90
4.6.4 桥梁模式的实例 90
4.7 外观模式 92
4.7.1 现实场景:我在加班呢 93
4.7.2 外观模式的定义 93
4.7.3 外观模式的应用 94
4.7.4 外观模式的实例 95
4.8 享元模式 96
4.8.1 现实场景:奖票中奖 97
4.8.2 享元模式的定义 97
4.8.3 享元模式的应用 99
4.8.4 享元模式的实例 99
小结 101
练习 102
第5章 行为型模式(1) 103
5.1 行为型模式简述 104
5.2 模板方法模式 104
5.2.1 现实场景:五五分账 104
5.2.2 模板方法模式的定义 104
5.2.3 模板方法模式的应用 105
5.2.4 模板方法模式的实例 106
5.3 命令模式 108
5.3.1 现实场景:瓶盖上的秘密 108
5.3.2 命令模式的定义 108
5.3.3 命令模式的应用 110
5.3.4 命令模式的实例 111
5.4 责任链模式 113
5.4.1 现实场景:KTV游戏 113
5.4.2 责任链模式的定义 113
5.4.3 责任链模式的应用 115
5.4.4 责任链模式的实例 115
5.5 策略模式 119
5.5.1 现实场景:天网恢恢,疏而不漏 119
5.5.2 策略模式的定义 119
5.5.3 策略模式的应用 120
5.5.4 策略模式的实例 121
5.6 迭代器模式 123
5.6.1 现实场景:坦白从宽 123
5.6.2 迭代器模式的定义 124
5.6.3 迭代器模式的应用 127
5.6.4 迭代器模式的实例 127
小结 129
练习 129
第6章 行为型模式(2) 131
6.1 中介者模式 132
6.1.1 现实场景:婚姻中介所 132
6.1.2 中介者模式的定义 132
6.1.3 中介者模式的应用 135
6.1.4 中介者模式的实例 136
6.2 观察者模式 138
6.2.1 现实场景:倒地扶不扶? 138
6.2.2 观察者模式的定义 139
6.2.3 观察者模式的应用 141
6.2.4 观察者模式的实例 142
6.3 备忘录模式 144
6.3.1 现实场景:游戏存档 145
6.3.2 备忘录模式的定义 145
6.3.3 备忘录模式的应用 147
6.3.4 备忘录模式的实例 148
6.4 访问者模式 151
6.4.1 现实场景:医院看病 151
6.4.2 访问者模式的定义 151
6.4.3 访问者模式的应用 155
6.4.4 访问者模式的实例 155
6.5 状态模式 159
6.5.1 现实场景:电视频道随便换 159
6.5.2 状态模式的定义 159
6.5.3 状态模式的应用 162
6.5.4 状态模式的实例 163
6.6 解释器模式 165
6.6.1 现实场景:破解密码 165
6.6.2 解释器模式的定义 166
6.6.3 解释器模式的应用 167
6.6.4 解释器模式的实例 168
小结 171
练习 171
第7章 混合设计模式的应用 173
7.1 混合设计模式简介 174
7.2 命令链模式 174
7.3 工厂策略模式 186
7.4 观察中介者模式 193
7.5 规格模式 200
小结 207
练习 208
第8章 设计模式对比 209
8.1 创建型模式对比 210
8.1.1 工厂方法模式制造超人 210
8.1.2 建造者模式制造超人 212
8.1.3 抽象工厂模式制造超人 215
8.2 结构型模式对比 217
8.2.1 代理模式 218
8.2.2 装饰模式 220
8.2.3 适配器模式 222
8.3 行为型模式对比 224
8.3.1 策略模式 224
8.3.2 命令模式 227
小结 230
练习 231
附录A 23种设计模式 232
附录B UML图标及Java实现 237