一、目录介绍
第1章 走向灵活软件之路——面向对象的六大原则
1.1 优化代码的第一步——单一职责原则
1.2 让程序更稳定、更灵活——开闭原则
1.3 构建扩展性更好的系统——里氏替换原则
1.4 让项目拥有变化的能力——依赖倒置原则
1.5 系统有更高的灵活性——接口隔离原则
1.6 更好的可扩展性——迪米特原则
1.7 总结
第2章 应用最广的模式——单例模式
2.1 单例模式介绍
2.2 单例模式的定义
2.3 单例模式的使用场景
2.4 单例模式UML类图
2.5 单例模式的简单示例
2.6 单例模式的其他实现方式
2.6.1 懒汉模式
2.6.2 Double CheckLock ( DCL )实现单例
2.6.3 静态内部类单例模式
2.6.4 枚举单例
2.6.5 使用容器实现单例模式
2.7 Android源码中的单例模式
2.8 无名英雄——深入理解LayoutInflater
2.9 运用单例模式
2.10 总结
第3章 自由扩展你的项目——Builder模式
3.1 Builder模式介绍
3.2 Builder模式的定义
3.3 Builder模式的使用场景
3.4 Builder模式的UML类图
3.5 Builder模式的简单实现
3.6 Android源码中的Builder模式实现
3.7 深入了解WindowManager
3.8 Builder模式实战
3.9 总结
第4章 使程序运行更高效——原型模式
4.1 原型模式介绍
4.2 原型模式的定义
4.3 原型模式的使用场景
4.4 原型模式的UML类图
4.5 原型模式的简单实现
4.6 浅拷贝和深拷贝
4.7 Android源码中的原型模式实现
4.8 Intent的查找与匹配
4.8.1 App信息表的构建
4.8.2 精确匹配
4.9 原型模式实战
4.10 总结
第5章 应用最广泛的模式——工厂方法模式
5.1 工厂方法模式介绍
5.2 工厂方法模式的定义
5.3 工厂方法模式的使用场景
5.4 工厂方法模式的UML类图
5.5 模式的简单实现
5.6 Android源码中的工厂方法模式实现
5.7 关于onCreate方法
5.8 工厂方法模式实战
5.9 总结
第6章 创建型设计模式——抽象工厂模式
6.1 抽象工厂模式介绍
6.2 抽象工厂模式的定义
6.3 抽象工厂模式的使用场景
6.4 抽象工厂模式的UML类图
6.5 抽象工厂方法模式的简单实现
6.6 Android源码中的抽象工厂方法模式实现
6.7 总结
第7章 时势造英雄——策略模式
7.1 策略模式介绍
7.2 策略模式的定义
7.3 策略模式的使用场景
7.4 策略模式的UML类图
7.5 策略模式的简单实现
7.6 Android源码中的策略模式实现
7.6.1 时间插值器
7.6.2 动画中的时间插值器
7.7 深入属性动画
7.7.1 属性动画体系的总体设计
7.7.2 属性动画的核心类介绍
7.7.3 基本使用
7.7.4 流程图
7.7.5 详细设计
7.7.6 核心原理分析
7.8 策略模式实战应用
7.9 总结
第8章 随遇而安——状态模式
8.1 状态模式介绍
8.2 状态模式的定义
8.3 状态模式的使用场景
8.4 状态模式的UML类图
8.5 状态模式的简单示例
8.6 Wi—Fi管理中的状态模式
8.7 状态模式实战
8.8 总结
第9章 使编程更有灵活性——责任链模式
9.1 责任链模式介绍
9.2 责任链模式的定义
9.3 责任链模式的使用场景
9.4 责任链模式的UML类图
9.5 责任链模式的简单实现
9.6 Android源码中的责任链模式实现
9.7 责任链模式实战
9.8 总结
第10章 化繁为简的翻译机——解释器模式
10.1 解释器模式介绍
10.2 解释器模式的定义
10.3 解释器模式的使用场景
10.4 解释器模式的UML类图
10.5 解释器模式的简单实现
10.6 Android源码中的解释器模式实现
10.7 关于PackageManagerService
10.8 总结
第11章 让程序畅通执行——命令模式
11.1 命令模式介绍
11.2 命令模式的定义
11.3 命令模式的使用场景
11.4 命令模式的UML类图
11.5 命令模式的简单实现
11.6 Android源码中的命令模式实现
11.7 Android事件输入系统介绍
11.8 命令模式实战
11.9 总结
第12章 解决、解耦的钥匙——观察者模式
12.1 观察者模式介绍
12.2 观察者模式的定义
12.3 观察者模式的使用场景
12.4 观察者模式的UML类图
12.5 观察者模式的简单实现
12.6 Android源码分析
12.7 观察者模式的深入拓展
12.8 实战
12.9 总结
第13章 编程中的“后悔药”——备忘录模式
13.1 备忘录模式介绍
13.2 备忘录模式的定义
13.3 备忘录模式的使用场景
13.4 备忘录模式的UML类图
13.5 备忘录模式的简单示例
13.6 Android源码中的备忘录模式
13.7 深度拓展
13.7.1 onSaveInstanceState调用的时机
13.7.2 使用V4包存储状态的bug
13.8 实战
13.9 总结
第14章 解决问题的“第三者”——迭代器模式
14.1 迭代器模式介绍
14.2 迭代器模式的定义
14.3 迭代器模式的使用场景
14.4 迭代器模式的UML类图
14.5 模式的简单实现
14.6 Android源码中的模式实现
14.7 总结
第15章 抓住问题核心——模板方法模式
15.1 模板方法模式介绍
15.2 模板方法模式的定义
15.3 模板方法模式的使用场景
15.4 模板方法模式的UML类图
15.5 模板方法模式的简单示例
15.6 Android源码中的模板方法模式
15.7 深度拓展
15.8 模板方法实战
15.9 总结
第16章 访问者模式
16.1 访问者模式介绍
16.2 访问者模式的定义
16.3 访问者模式的使用场景
16.4 访问者模式的UML类图
16.5 访问者模式的简单示例
16.6 Android源码中的模式
16.7 访问者模式实战
16.8 总结
第17章 “和事佬”——中介者模式
17.1 中介者模式介绍
17.2 中介者模式的定义
17.3 中介者模式的使用场景
17.4 中介者模式的UML类图
17.5 中介者模式的简单实现
17.6 Android源码中的中介者模式实现
17.7 中介者模式实战
17.8 总结
第18章 编程好帮手——代理模式
18.1 代理模式介绍
18.2 代理模式的定义
18.3 代理模式的使用场景
18.4 代理模式的UML类图
18.5 代理模式的简单实现
18.6 Android源码中的代理模式实现
18.7 Android中的Binder跨进程通信机制与AIDL
18.8 代理模式实战
18.9 总结
第19章 物以类聚——组合模式
19.1 组合模式介绍
19.2 组合模式的定义
19.3 组合模式的使用场景
19.4 组合模式的UML类图
19.5 组合模式的简单实现
19.6 Android源码中的模式实现
19.7 为什么ViewGroup有容器的功能
19.8 总结
第20章 得心应手的“粘合剂”——适配器模式
20.1 适配器模式介绍
20.2 适配器模式的定义
20.3 适配器模式的使用场景
20.4 适配器模式的UML类图
20.5 适配器模式应用的简单示例
20.5.1 类适配器模式
20.5.2 对象适配器模式
20.6 Android源码中的适配器模式
20.7 深度拓展
20.8 实战演示
20.9 总结
第21章 装饰模式
21.1 装饰模式介绍
21.2 装饰模式的定义
21.3 装饰模式的使用场景
21.4 装饰模式的UML类图
21.5 模式的简单实现
21.6 Android源码中的模式实现
21.7 Context与ContextImpl
21.8 模式实战
21.9 总结
第22章 对象共享,避免创建多对象——享元模式
22.1 享元模式介绍
22.2 享元模式定义
22.3 享元模式的使用场景
22.4 享元模式的UML类图
22.5 享元模式的简单示例
22.6 Android源码中的享元模式
22.7 深度拓展
22.7.1 深入了解Android的消息机制
22.7.2 子线程中创建Handler为何会抛出异常
22.8 总结
第23章 统一编程接口——外观模式
23.1 外观模式介绍
23.2 外观模式定义
23.3 外观模式的使用场景
23.4 外观模式的UML类图
23.5 外观模式的简单示例
23.6 Android源码中的外观模式
23.7 深度拓展
23.7.1 Android资源的加载与匹配
23.7.2 动态加载框架的实现
23.8 外观模式实战
23.9 总结
第24章 连接两地的交通枢钮——桥接模式
24.1 桥接模式介绍
24.2 桥接模式的定义
24.3 桥接模式的使用场景
24.4 桥接模式的UML类图
24.5 桥接模式的简单实现
24.6 Android源码中的桥接模式实现
24.7 关于WindowManagerService
24.8 桥接模式实战
24.9 总结
第25章 MVC的介绍与实战
25.1 MVC的起源与历史
25.2 MVC在Android中的实现
25.3 总结
第26章 MVP应用架构模式
26.1 MVP模式介绍
26.2 MVP模式的三个角色
26.3 与MVC、MVVM的区别
26.4 MVP的实现
26.5 MVP与Activity、Fragment的生命周期