本书写作方式新颖、语言精炼、行文幽默、阐述深刻、注重实战,注定会成为设计模式领域的里程碑之作。全书共分为五部分,第一部分全面讲述了面向对象程序设计的6大原则;第二部分深入浅出地阐述了23种设计模式,将这23种设计模式与我们耳熟能详的历史故事结合在了一起,趣味性极强;第三部分对各种彼此之间有关联的设计模式进行了分析和比较,不仅告诉读者何时应该使用何种设计模式,而且还告诉读者如何在实际开发中运用这些设计模式,这是全书的精华部分之一,是目前所有设计模式类书籍都不具备的;第四部分是全书内容的升华,讲解了设计模式的混编,深入地剖析了如何将各种设计模式结合起来使用,这也是同类书中未涉及的内容,能让读者的水平提升到一个更高的层次;第五部分是附录,对23种设计模式的定义进行了摘录和翻译,原汁原味,同时还提供了一份设计模式彩图手册,读者可以拆下来,随身携带,便于参考。
封面图
目录
- 前言
- 第一部分 大旗不挥,谁敢冲
- 锋—6大设计原则全新解读
- 第1章 单一职责原则2
- 1.1 我是“牛”类,我可以担任多职吗2
- 1.2 绝杀技,打破你的传统思维3
- 1.3 我单纯,所以我快乐6
- 1.4 最佳实践7
- 第2章 里氏替换原则8
- 2.1 爱恨纠葛的父子关系8
- 2.2 纠纷不断,规则压制9
- 2.3 最佳实践18
- 第3章 依赖倒置原则19
- 3.1 依赖倒置原则的定义19
- 3.2 言而无信,你太需要契约20
- 3.3 依赖的三种写法25
- 3.4 最佳实践26
- 第4章 接口隔离原则28
- 4.1 接口隔离原则的定义28
- 4.2 美女何其多,观点各不同29
- 4.3 保证接口的纯洁性33
- 4.4 最佳实践35
- 第5章 迪米特法则36
- 5.1 迪米特法则的定义36
- 5.2 我的知识你知道得越少越好36
- 5.3 最佳实践43
- 第6章 开闭原则44
- 6.1 开闭原则的定义44
- 6.2 开闭原则的庐山真面目44
- 6.3 为什么要采用开闭原则49
- 6.4 如何使用开闭原则51
- 6.5 最佳实践55
- 第二部分 真刀实枪—23种
- 设计模式完美演绎
- 第7章 单例模式58
- 7.1 我是皇帝我独苗58
- 7.2 单例模式的定义59
- 7.3 单例模式的应用60
- 7.3.1 单例模式的优点60
- 7.3.2 单例模式的缺点60
- 7.3.3 单例模式的使用场景61
- 7.3.4 单例模式的注意事项61
- 7.4 单例模式的扩展62
- 7.5 最佳实践64
- 第8章 工厂方法模式65
- 8.1 女娲造人的故事65
- 8.2 工厂方法模式的定义69
- 8.3 工厂方法模式的应用70
- 8.3.1 工厂方法模式的优点70
- 8.3.2 工厂方法模式的使用场景71
- 8.4 工厂方法模式的扩展71
- 8.5 最佳实践77
- 第9章 抽象工厂模式78
- 9.1 女娲的失误78
- 9.2 抽象工厂模式的定义83
- 9.3 抽象工厂模式的应用86
- 9.3.1 抽象工厂模式的优点86
- 9.3.2 抽象工厂模式的缺点86
- 9.3.3 抽象工厂模式的使用场景86
- 9.3.4 抽象工厂模式的注意事项86
- 9.4 最佳实践87
- 第10章 模板方法模式88
- 10.1 辉煌工程—制造悍马88
- 10.2 模板方法模式的定义93
- 10.3 模板方法模式的应用94
- 10.3.1 模板方法模式的优点94
- 10.3.2 模板方法模式的缺点95
- 10.3.3 模板方法模式的使用场景95
- 10.4 模板方法模式的扩展95
- 10.5 最佳实践99
- 第11章 建造者模式100
- 11.1 变化是永恒的100
- 11.2 建造者模式的定义109
- 11.3 建造者模式的应用111
- 11.3.1 建造者模式的优点111
- 11.3.2 建造者模式的使用场景111
- 11.3.3 建造者模式的注意事项111
- 11.4 建造者模式的扩展111
- 11.5 最佳实践112
- 第12章 代理模式113
- 12.1 我是游戏至尊113
- 12.2 代理模式的定义116
- 12.3 代理模式的使用场景118
- 12.3.1 代理模式的优点118
- 12.3.2 代理模式的使用场景119
- 12.4 代理模式的扩展119
- 12.4.1 普通代理119
- 12.4.2 强制代理121
- 12.4.3 代理是有个性的126
- 12.4.4 虚拟代理128
- 12.4.5 动态代理128
- 12.5 最佳实践134
- 第13章 原型模式135
- 13.1 个性化电子账单135
- 13.2 原型模式的定义141
- 13.3 原型模式的应用142
- 13.3.1 原型模式的优点142
- 13.3.2 原型模式的使用场景142
- 13.4 原型模式的注意事项143
- 13.4.1 构造函数不会被执行143
- 13.4.2 浅拷贝和深拷贝144
- 13.4.3 clone与final两个冤家146
- 13.5 最佳实践146
- 第14章 中介者模式147
- 14.1 进销存管理是这个样子的吗147
- 14.2 中介者模式的定义156
- 14.3 中介者模式的应用159
- 14.3.1 中介者模式的优点159
- 14.3.2 中介者模式的缺点159
- 14.3.3 中介者模式的使用场景159
- 14.4 中介者模式的实际应用160
- 14.5 最佳实践161
- 第15章 命令模式162
- 15.1 项目经理也难当162
- 15.2 命令模式的定义170
- 15.3 命令模式的应用173
- 15.3.1 命令模式的优点173
- 15.3.2 命令模式的缺点173
- 15.3.3 命令模式的使用场景173
- 15.4 命令模式的扩展173
- 15.4.1 未讲完的故事173
- 15.4.2 反悔问题174
- 15.5 最佳实践175
- 第16章 责任链模式178
- 16.1 古代妇女的枷锁—
- “三从四德”178
- 16.2 责任链模式的定义186
- 16.3 责任链模式的应用189
- 16.3.1 责任链模式的优点189
- 16.3.2 责任链模式的缺点190
- 16.3.3 责任链模式的注意事项190
- 16.4 最佳实践190
- 第17章 装饰模式192
- 17.1 罪恶的成绩单192
- 17.2 装饰模式的定义198
- 17.3 装饰模式应用201
- 17.3.1 装饰模式的优点201
- 17.3.2 装饰模式的缺点201
- 17.3.3 装饰模式的使用场景201
- 17.4 最佳实践201
- 第18章 策略模式203
- 18.1 刘备江东娶妻,赵云他容易吗203
- 18.2 策略模式的定义206
- 18.3 策略模式的应用208
- 18.3.1 策略模式的优点208
- 18.3.2 策略模式的缺点208
- 18.3.3 策略模式的使用场景209
- 18.3.4 策略模式的注意事项209
- 18.4 策略模式的扩展209
- 18.5 最佳实践214
- 第19章 适配器模式215
- 19.1 业务发展—上帝才能控制215
- 19.2 适配器模式的定义221
- 19.3 适配器模式的应用223
- 19.3.1 适配器模式的优点223
- 19.3.2 适配器模式的使用场景224
- 19.3.3 适配器模式的注意事项224
- 19.4 适配器模式的扩展224
- 19.5 最佳实践229
- 第20章 迭代器模式230
- 20.1 整理项目信息—苦差事230
- 20.2 迭代器模式的定义236
- 20.3 迭代器模式的应用239
- 20.4 最佳实践239
- 第21章 组合模式240
- 21.1 公司的人事架构是这样的吗240
- 21.2 组合模式的定义253
- 21.3 组合模式的应用255
- 21.3.1 组合模式的优点255
- 21.3.2 组合模式的缺点256
- 21.3.3 组合模式的使用场景256
- 21.3.4 组合模式的注意事项256
- 21.4 组合模式的扩展256
- 21.4.1 真实的组合模式256
- 21.4.2 透明的组合模式257
- 21.4.3 组合模式的遍历259
- 21.5 最佳实践260
- 第22章 观察者模式262
- 22.1 韩非子身边的卧底是谁派来的262
- 22.2 观察者模式的定义271
- 22.3 观察者模式的应用273
- 22.3.1 观察者模式的优点273
- 22.3.2 观察者模式的缺点274
- 22.3.3 观察者模式的使用场景274
- 22.3.4 观察者模式的注意事项274
- 22.4 观察者模式的扩展275
- 22.4.1 Java世界中的观察者模式275
- 22.4.2 项目中真实的观察者模式276
- 22.4.3 订阅发布模型277
- 22.5 最佳实践277
- 第23章 门面模式278
- 23.1 我要投递信件278
- 23.2 门面模式的定义283
- 23.3 门面模式的应用284
- 23.3.1 门面模式的优点284
- 23.3.2 门面模式的缺点285
- 23.3.3 门面模式的使用场景285
- 23.4 门面模式的注意事项285
- 23.4.1 一个子系统可以有多个
- 门面285
- 23.4.2 门面不参与子系统内的
- 业务逻辑286
- 23.5 最佳实践288
- 第24章 备忘录模式289
- 24.1 如此追女孩子,你还不乐289
- 24.2 备忘录模式的定义294
- 24.3 备忘录模式的应用297
- 24.3.1 备忘录模式的使用场景297
- 24.3.2 备忘录模式的注意事项297
- 24.4 备忘录模式的扩展297
- 24.4.1 clone方式的备忘录297
- 24.4.2 多状态的备忘录模式300
- 24.4.3 多备份的备忘录304
- 24.4.4 封装得更好一点305
- 24.5 最佳实践307
- 第25章 访问者模式308
- 25.1 员工的隐私何在308
- 25.2 访问者模式的定义316
- 25.3 访问者模式的应用320
- 25.3.1 访问者模式的优点320
- 25.3.2 访问者模式的缺点320
- 25.3.3 访问者模式的使用场景320
- 25.4 访问者模式的扩展321
- 25.4.1 统计功能321
- 25.4.2 多个访问者323
- 25.4.3 双分派326
- 25.5 最佳实践328
- 第26章 状态模式329
- 26.1 城市的纵向发展功臣—电梯329
- 26.2 状态模式的定义341
- 26.3 状态模式的应用343
- 26.3.1 状态模式的优点343
- 26.3.2 状态模式的缺点344
- 26.3.3 状态模式的使用场景344
- 26.3.4 状态模式的注意事项344
- 26.4 最佳实践344
- 第27章 解释器模式346
- 27.1 四则运算你会吗346
- 27.2 解释器模式的定义352
- 27.3 解释器模式的应用354
- 27.3.1 解释器模式的优点354
- 27.3.2 解释器模式的缺点354
- 27.3.3 解释器模式使用的场景355
- 27.3.4 解释器模式的注意事项355
- 27.4 最佳实践355
- 第28章 享元模式356
- 28.1 内存溢出,司空见惯356
- 28.2 享元模式的定义361
- 28.3 享元模式的应用364
- 28.3.1 享元模式的优点和缺点364
- 28.3.2 享元模式的使用场景364
- 28.4 享元模式的扩展365
- 28.4.1 线程安全的问题365
- 28.4.2 性能平衡366
- 28.5 最佳实践369
- 第29章 桥梁模式371
- 29.1 我有一个梦想…… 371
- 29.2 桥梁模式的定义379
- 29.3 桥梁模式的应用381
- 29.3.1 桥梁模式的优点381
- 29.3.2 桥梁模式的使用场景382
- 29.3.3 桥梁模式的注意事项382
- 29.4 最佳实践382
- 第三部分 谁的地盘谁做主—设计模式PK
- 第30章 创建类模式大PK384
- 30.1 工厂方法模式VS建造者模式384
- 30.1.1 按工厂方法建造超人384
- 30.1.2 按建造者模式建造超人386
- 30.1.3 最佳实践389
- 30.2 抽象工厂模式VS建造者模式390
- 30.2.1 按抽象工厂模式生产车辆390
- 30.2.2 按建造者模式生产车辆394
- 30.2.3 最佳实践399
- 第31章 结构类模式大PK400
- 31.1 代理模式VS装饰模式400
- 31.1.1 代理模式400
- 31.1.2 装饰模式402
- 31.1.3 最佳实践403
- 31.2 装饰模式VS适配器模式404
- 31.2.1 用装饰模式描述丑小鸭404
- 31.2.2 用适配器模式实现丑小鸭407
- 31.2.3 最佳实践410
- 第32章 行为类模式大PK411
- 32.1 命令模式VS策略模式411
- 32.1.1 策略模式实现压缩算法411
- 32.1.2 命令模式实现压缩算法414
- 32.1.3 小结419
- 32.2 策略模式VS状态模式420
- 32.2.1 策略模式实现人生420
- 32.2.2 状态模式实现人生423
- 32.2.3 小结425
- 32.3 观察者模式VS责任链模式426
- 32.3.1 责任链模式实现DNS
- 解析过程427
- 32.3.2 触发链模式实现DNS
- 解析过程432
- 32.3.3 小结437
- 第33章 跨战区PK438
- 33.1 策略模式VS桥梁模式438
- 33.1.1 策略模式实现邮件发送439
- 33.1.2 桥梁模式实现邮件发送442
- 33.1.3 最佳实践445
- 33.2 门面模式VS中介者模式446
- 33.2.1 中介者模式实现工资计算446
- 33.2.2 门面模式实现工资计算451
- 33.2.3 最佳实践454
- 33.3 包装模式群PK455
- 33.3.1 代理模式455
- 33.3.2 装饰模式457
- 33.3.3 适配器模式459
- 33.3.4 桥梁模式461
- 33.3.5 最佳实践464
- 第四部分 完美世界—
- 设计模式混编
- 第34章 命令模式+责任链模式466
- 34.1 搬移UNIX的命令466
- 34.2 混编小结481
- 第35章 工厂方法模式+策略模式483
- 35.1 迷你版的交易系统483
- 35.2 混编小结493
- 第36章 观察者模式+中介者模式495
- 36.1 事件触发器的开发495
- 36.2 混编小结508
- 第37章 规格模式509
- 37.1 规格模式的实现509
- 37.2 最佳实践521
- 第38章 MVC框架526
- 38.1 MVC框架的实现526
- 38.1.1 MVC的系统架构528
- 38.1.2 模型管理器534
- 38.1.3 值栈538
- 38.1.4 视图管理器538
- 38.1.5 工具类542
- 38.2 最佳实践544
- 附录:23种设计模式彩图