《大话设计模式》通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的经典名著――Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式――可复用面向对象软件的基础》的四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结。附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。本书的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解――为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以“鱼”,还授之以“渔”的目的。引导读者体会设计演变过程中蕴藏的大智慧。
本书适合编程初学者或希望在面向对象编程上有所提高的开发人员阅读。
目录
- 第1章 代码无错就是优?――简单工厂模式
- 1.1 面试受挫
- 1.2 初学者代码毛病
- 1.3 代码规范
- 1.4 面向对象编程
- 1.5 活字印刷,面向对象
- 1.6 面向对象的好处
- 1.7 复制vs.复用
- 1.8 业务的封装
- 1.9 紧耦合vs.松耦合
- 1.10 简单工厂模式
- 1.11 UML类图
- 第2章 商场促销――策略模式
- 2.1 商场收银软件
- 2.2 增加打折
- 2.3 简单工厂实现
- 2.4 策略模式
- 2.5 策略模式实现
- 2.6 策略与简单工厂结合
- 2.7 策略模式解析
- 第3章 拍摄UFO――单一职责原则
- 3.1 新手机
- 3.2 拍摄
- 3.3 没用的东西
- 3.4 单一职责原则
- 3.5 方块游戏的设计
- 3.6 手机职责过多吗?
- 第4章 考研求职两不误――开放-封闭原则
- 4.1 考研失败
- 4.2 开放-封闭原则
- 4.3 何时应对变化
- 4.4 两手准备,并全力以赴
- 第5章 会修电脑不会修收音机?――依赖倒转原则
- 5.1 MM请求修电脑
- 5.2 电话遥控修电脑
- 5.3 依赖倒转原则
- 5.4 里氏代换原则
- 5.5 修收音机
- 第6章 穿什么有这么重要?――装饰模式
- 6.1 穿什么有这么重要?
- 6.2 小菜扮靓第一版
- 6.3 小菜扮靓第二版
- 6.4 装饰模式
- 6.5 小菜扮靓第三版
- 6.6 装饰模式总结
- 第7章 为别人做嫁衣――代理模式
- 7.1 为别人做嫁衣!
- 7.2 没有代理的代码
- 7.3 只有代理的代码
- 7.4 符合实际的代码
- 7.5 代理模式
- 7.6 代理模式应用
- 7.7 秀才让小六代其求婚
- 第8章 雷锋依然在人间――工厂方法模式
- 8.1 再现活雷锋
- 8.2 简单工厂模式实现
- 8.3 工厂方法模式实现
- 8.4 简单工厂vs.工厂方法
- 8.5 雷锋工厂
- 第9章 简历复印――原型模式
- 9.1 夸张的简历
- 9.2 简历代码初步实现
- 9.3 原型模式
- 9.4 简历的原型实现
- 9.5 浅复制与深复制
- 9.6 简历的深复制实现
- 9.7 复制简历vs.手写求职信
- 第10章 考题抄错会做也白搭――模板方法模式
- 10.1 选择题不会做,蒙呗!
- 10.2 重复=易错 难改
- 10.3 提炼代码
- 10.4 模板方法模式
- 10.5 模板方法模式特点
- 10.6 主观题,看你怎么蒙
- 第11章 无熟人难办事?――迪米特法则
- 11.1 第一天上班
- 11.2 无熟人难办事
- 11.3 迪米特法则
- 第12章 牛市股票还会亏钱?――外观模式
- 12.1 牛市股票还会亏钱?
- 12.2 股民炒股代码
- 12.3 投资基金代码
- 12.4 外观模式
- 12.5 何时使用外观模式
- 第13章 好菜每回味不同――建造者模式
- 13.1 炒面没放盐
- 13.2 建造小人一
- 13.3 建造小人二
- 13.4 建造者模式
- 13.5 建造者模式解析
- 13.6 建造者模式基本代码
- 第14章 老板回来,我不知道――观察者模式
- 14.1 老板回来?我不知道!
- 14.2 双向耦合的代码
- 14.3 解耦实践一
- 14.4 解耦实践二
- 14.5 观察者模式
- 14.6 观察者模式特点
- 14.7 观察者模式的不足
- 14.8 事件委托实现
- 14.9 事件委托说明
- 14.10 石守吉失手机后的委托
- 第15章 就不能不换DB吗?――抽象工厂模式
- 15.1 就不能不换DB吗?
- 15.2 最基本的数据访问程序
- 15.3 用了工厂方法模式的数据访问程序
- 15.4 用了抽象工厂模式的数据访问程序
- 15.5 抽象工厂模式
- 15.6 抽象工厂模式的优点与缺点
- 15.7 用简单工厂来改进抽象工厂
- 15.8 用反射 抽象工厂的数据访问程序
- 15.9 用反射 配置文件实现数据访问程序
- 15.10 无痴迷,不成功
- 第16章 无尽加班何时休――状态模式
- 16.1 加班,又是加班!
- 16.2 工作状态-函数版
- 16.3 工作状态-分类版
- 16.4 方法过长是坏味道
- 16.5 状态模式
- 16.6 状态模式好处与用处
- 16.7 工作状态-状态模式版
- 第17章 在NBA我需要翻译――适配器模式
- 17.1 在NBA我需要翻译!
- 17.2 适配器模式
- 17.3 何时使用适配器模式
- 17.4 篮球翻译适配器
- 17.5 适配器模式的.NET应用
- 17.6 扁鹊的医术
- 第18章 如果再回到从前――备忘录模式
- 18.1 如果再给我一次机会……
- 18.2 游戏存进度
- 18.3 备忘录模式
- 18.4 备忘录模式基本代码
- 18.5 游戏进度备忘
- 第19章 分公司=一部门――组合模式
- 19.1 分公司不就是一部门吗?
- 19.2 组合模式
- 19.3 透明方式与安全方式
- 19.4 何时使用组合模式
- 19.5 公司管理系统
- 19.6 组合模式好处
- 第20章 想走?可以!先买票――迭代器模式
- 20.1 乘车买票,不管你是谁!
- 20.2 迭代器模式
- 20.3 迭代器实现
- 20.4 .NET的迭代器实现
- 20.5 迭代高手
- 第21章 有些类也需计划生育――单例模式
- 21.1 类也需要计划生育
- 21.2 判断对象是否是null
- 21.3 生还是不生是自己的责任
- 21.4 单例模式
- 21.5 多线程时的单例
- 21.6 双重锁定
- 21.7 静态初始化
- 第22章 手机软件何时统一――桥接模式
- 22.1 凭什么你的游戏我不能玩
- 22.2 紧耦合的程序演化
- 22.3 合成/聚合复用原则
- 22.4 松耦合的程序
- 22.5 桥接模式
- 22.6 桥接模式基本代码
- 22.7 我要开发“好”游戏
- 第23章 烤羊肉串引来的思考――命令模式
- 23.1 吃烤羊肉串!
- 23.2 烧烤摊vs.烧烤店
- 23.3 紧耦合设计
- 23.4 松耦合设计
- 23.5 松耦合后
- 23.6 命令模式
- 23.7 命令模式作用
- 第24章 加薪非要老总批?――职责链模式
- 24.1 老板,我要加薪!
- 24.2 加薪代码初步
- 24.3 职责链模式
- 24.4 职责链的好处
- 24.5 加薪代码重构
- 24.6 加薪成功
- 第25章 世界需要和平――中介者模式
- 25.1 世界需要和平!
- 25.2 中介者模式
- 25.3 安理会做中介
- 25.4 中介者模式优缺点
- 第26章 项目多也别傻做――享元模式
- 26.1 项目多也别傻做!
- 26.2 享元模式
- 26.3 网站共享代码
- 26.4 内部状态与外部状态
- 26.5 享元模式应用
- 第27章 其实你不懂老板的心――解释器模式
- 27.1 其实你不懂老板的心
- 27.2 解释器模式
- 27.3 解释器模式好处
- 27.4 音乐解释器
- 27.5 音乐解释器实现
- 27.6 料事如神
- 第28章 男人和女人――访问者模式
- 28.1 男人和女人!
- 28.2 最简单的编程实现
- 28.3 简单的面向对象实现
- 28.4 用了模式的实现
- 28.5 访问者模式
- 28.6 访问者模式基本代码
- 28.7 比上不足,比下有余
- 第29章 OOTV杯超级模式大赛――模式总结
- 29.1 演讲任务
- 29.2 报名参赛
- 29.3 超模大赛开幕式
- 29.4 创建型模式比赛
- 29.5 结构型模式比赛
- 29.6 行为型模式一组比赛
- 29.7 行为型模式二组比赛
- 29.8 决赛
- 29.9 梦醒时分
- 29.10 没有结束的结尾
- 附录 A 培训实习生――面向对象基础
- A.1 培训实习生
- A.2 类与实例
- A.3 构造方法
- A.4 方法重载
- A.5 属性与修饰符
- A.6 封装
- A.7 继承
- A.8 多态
- A.9 重构
- A.10 抽象类
- A.11 接口
- A.12 集合
- A.13 泛型
- A.14 委托与事件
- A.15 客套
- 附录 B 参考文献