编辑推荐
CSDN社区专家精心撰写、业界专家邓凡平、郭霖、任玉刚、徐宜生等鼎力推荐业界第1本Android源码讲解设计模式的书本书不仅分析了Android源代码的设计模式,更结合实例演示了如何使用这些设计模式。看这本书,既能学到如何分析、学习Android源代码,又能提高自己架构设计水平书中的主人公小民就是那些不断追求技术进步,从而得以不断成长的IT技术人的代表,小民的成长过程基本上反映了我们现在程序员的成长经历,他的成功很值得我们学习和借鉴。
内容简介
本书专门介绍Android源代码的设计模式,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。本书的主要内容为:优化代码的步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介者模式、代理模式、组合模式、适配器模式、装饰模式、享元模式、外观模式、桥接模式,以及MVC的介绍与实战和MVP应用架构模式。每个章节都对某个模式做了深入分析,并且会对模式相关的技术点进行深入拓展,让读者在掌握模式的同时学习到Android中的一些重要知识,通过实战帮助读者达到学以致用的目的,且能够将模式运用于项目中,开发出高质量的程序。 本书适合的读者为初、中、不错Android工程师,也可以作为大专院校相关师生的学习用书和培训学校的教材。
作者简介
*旗下友盟的高级程序员,CSDN博客专家,在开源社区做了大量的工作,贡献了许多模式设计的技术。
目录
- 第1章 走向灵活软件之路——
- 面向对象的六大原则 1
- 1.1 优化代码的DIYI步——单一职责原则 1
- 1.2 让程序更稳定、更灵活——开闭原则 5
- 1.3 构建扩展性更好的系统——
- 里氏替换原则 12
- 1.4 让项目拥有变化的能力——
- 依赖倒置原则 14
- 1.5 系统有更高的灵活性——
- 接口隔离原则 16
- 1.6 更好的可扩展性——迪米特原则 19
- 1.7 小结 23
- 第2章 应用ZUI广的模式——单例模式 24
- 2.1 单例模式介绍 24
- 2.2 单例模式的定义 24
- 2.3 单例模式的使用场景 24
- 2.4 单例模式UML类图 24
- 2.5 单例模式的简单示例 25
- 2.6 单例模式的其他实现方式 27
- 2.6.1 懒汉模式 27
- 2.6.2 Double Check Lock (DCL)实现
- 单例 27
- 2.6.3 静态内部类单例模式 28
- 2.6.4 枚举单例 29
- 2.6.5 使用容器实现单例模式 30
- 2.7 Android源码中的单例模式 30
- 2.8 无名英雄——深入理解LayoutInflater 34
- 2.9 运用单例模式 41
- 2.10 小结 43
- 第3章 自由扩展你的项目——
- Builder模式 44
- 3.1 Builder模式介绍 44
- 3.2 Builder模式的定义 44
- 3.3 Builder模式的使用场景 44
- 3.4 Builder模式的UML类图 44
- 3.5 Builder模式的简单实现 45
- 3.6 Android源码中的Builder模式实现 47
- 3.7 深入了解WindowManager 53
- 3.8 Builder模式实战 60
- 3.9 小结 65
- 第4章 使程序运行更高效——原型模式 66
- 4.1 原型模式介绍 66
- 4.2 原型模式的定义 66
- 4.3 原型模式的使用场景 66
- 4.4 原型模式的UML类图 66
- 4.5 原型模式的简单实现 67
- 4.6 浅拷贝和深拷贝 69
- 4.7 Android源码中的原型模式实现 72
- 4.8 Intent的查找与匹配 74
- 4.8.1 App信息表的构建 74
- 4.8.2 精确匹配 80
- 4.9 原型模式实战 83
- 4.10 小结 85
- 第5章 应用ZUI广泛的模式——
- 工厂方法模式 87
- 5.1 工厂方法模式介绍 87
- 5.2 工厂方法模式的定义 87
- 5.3 工厂方法模式的使用场景 87
- 5.4 工厂方法模式的UML类图 87
- 5.5 模式的简单实现 90
- 5.6 Android源码中的工厂方法模式实现 93
- 5.7 关于onCreate方法 95
- 5.8 工厂方法模式实战 102
- 5.9 小结 105
- 第6章 创建型设计模式——
- 抽象工厂模式 106
- 6.1 抽象工厂模式介绍 106
- 6.2 抽象工厂模式的定义 106
- 6.3 抽象工厂模式的使用场景 106
- 6.4 抽象工厂模式的UML类图 106
- 6.5 抽象工厂方法模式的简单实现 109
- 6.6 Android源码中的抽象工厂方法模式
- 实现 112
- 6.7 抽象工厂模式在Android开发中的
- 应用 116
- 6.8 小结 120
- 第7章 时势造英雄——策略模式 121
- 7.1 策略模式介绍 121
- 7.2 策略模式的定义 121
- 7.3 策略模式的使用场景 121
- 7.4 策略模式的UML类图 122
- 7.5 策略模式的简单实现 122
- 7.6 Android源码中的策略模式实现 127
- 7.6.1 时间插值器 127
- 7.6.2 动画中的时间插值器 128
- 7.7 深入属性动画 132
- 7.7.1 属性动画体系的总体设计 132
- 7.7.2 属性动画的核心类介绍 132
- 7.7.3 基本使用 133
- 7.7.4 流程图 134
- 7.7.5 详细设计 135
- 7.7.6 核心原理分析 135
- 7.8 策略模式实战应用 146
- 7.9 小结 148
- 第8章 随遇而安——状态模式 149
- 8.1 状态模式介绍 149
- 8.2 状态模式的定义 149
- 8.3 状态模式的使用场景 149
- 8.4 状态模式的UML类图 149
- 8.5 状态模式的简单示例 150
- 8.6 Wi-Fi管理中的状态模式 154
- 8.7 状态模式实战 163
- 8.8 小结 168
- 第9章 使编程更有灵活性——
- 责任链模式 169
- 9.1 责任链模式介绍 169
- 9.2 责任链模式的定义 169
- 9.3 责任链模式的使用场景 169
- 9.4 责任链模式的UML类图 169
- 9.5 责任链模式的简单实现 174
- 9.6 Android源码中的责任链模式实现 177
- 9.7 责任链模式实战 182
- 9.8 小结 185
- 第10章 化繁为简的翻译机——
- 解释器模式 186
- 10.1 解释器模式介绍 186
- 10.2 解释器模式的定义 186
- 10.3 解释器模式的使用场景 187
- 10.4 解释器模式的UML类图 188
- 10.5 解释器模式的简单实现 189
- 10.6 Android源码中的解释器模式实现 193
- 10.7 关于PackageManagerService 199
- 10.8 小结 207
- 第11章 让程序畅通执行——命令模式 208
- 11.1 命令模式介绍 208
- 11.2 命令模式的定义 208
- 11.3 命令模式的使用场景 208
- 11.4 命令模式的UML类图 208
- 11.5 命令模式的简单实现 211
- 11.6 Android源码中的命令模式实现 215
- 11.7 Android事件输入系统介绍 218
- 11.8 命令模式实战 220
- 11.9 小结 227
- 第12章 解决解耦的钥匙——
- 观察者模式 228
- 12.1 观察者模式介绍 228
- 12.2 观察者模式的定义 228
- 12.3 观察者模式的使用场景 228
- 12.4 观察者模式的UML类图 228
- 12.5 观察者模式的简单实现 229
- 12.6 Android源码分析 231
- 12.7 观察者模式的深入拓展 234
- 12.8 实战 242
- 12.9 小结 249
- 第13章 编程中的“后悔药”——
- 备忘录模式 251
- 13.1 备忘录模式介绍 251
- 13.2 备忘录模式的定义 251
- 13.3 备忘录模式的使用场景 251
- 13.4 备忘录模式的UML类图 251
- 13.5 备忘录模式的简单示例 252
- 13.6 Android源码中的备忘录模式 254
- 13.7 深度拓展 261
- 13.7.1 onSaveInstanceState调用的
- 时机 261
- 13.7.2 使用V4包存储状态的bug 261
- 13.8 实战 264
- 13.9 小结 271
- 第14章 解决问题的“第三者”——
- 迭代器模式 272
- 14.1 迭代器模式介绍 272
- 14.2 迭代器模式的定义 272
- 14.3 迭代器模式的使用场景 272
- 14.4 迭代器模式的UML类图 272
- 14.5 模式的简单实现 275
- 14.6 Android源码中的模式实现 279
- 14.7 小结 281
- 第15章 抓住问题核心——
- 模板方法模式 282
- 15.1 模板方法模式介绍 282
- 15.2 模板方法模式的定义 282
- 15.3 模板方法模式的使用场景 282
- 15.4 模板方法模式的UML类图 282
- 15.5 模板方法模式的简单示例 283
- 15.6 Android源码中的模板方法模式 285
- 15.7 深度拓展 287
- 15.8 模板方法实战 300
- 15.9 小结 303
- 第16章 访问者模式 305
- 16.1 访问者模式介绍 305
- 16.2 访问者模式的定义 305
- 16.3 访问者模式的使用场景 305
- 16.4 访问者模式的UML类图 305
- 16.5 访问者模式的简单示例 306
- 16.6 Android源码中的模式 311
- 16.7 访问者模式实战 314
- 16.8 小结 320
- 第17章 “和事佬”——中介者模式 321
- 17.1 中介者模式介绍 321
- 17.2 中介者模式的定义 322
- 17.3 中介者模式的使用场景 322
- 17.4 中介者模式的UML类图 322
- 17.5 中介者模式的简单实现 324
- 17.6 Android源码中的中介者模式实现 328
- 17.7 中介者模式实战 330
- 17.8 小结 333
- 第18章 编程好帮手——代理模式 334
- 18.1 代理模式介绍 334
- 18.2 代理模式的定义 334
- 18.3 代理模式的使用场景 334
- 18.4 代理模式的UML类图 334
- 18.5 代理模式的简单实现 336
- 18.6 Android源码中的代理模式实现 340
- 18.7 Android中的Binder跨进程通信机制
- 与AIDL 344
- 18.8 代理模式实战 355
- 18.9 小结 359
- 第19章 物以类聚——组合模式 360
- 19.1 组合模式介绍 360
- 19.2 组合模式的定义 361
- 19.3 组合模式的使用场景 361
- 19.4 组合模式的UML类图 361
- 19.5 组合模式的简单实现 367
- 19.6 Android源码中的模式实现 371
- 19.7 为什么ViewGroup有容器的功能 372
- 19.8 小结 374
- 第20章 得心应手的“粘合剂”——适配器
- 模式 375
- 20.1 适配器模式介绍 375
- 20.2 适配器模式的定义 375
- 20.3 适配器模式的使用场景 375
- 20.4 适配器模式的UML类图 375
- 20.5 适配器模式应用的简单示例 376
- 20.5.1 类适配器模式 376
- 20.5.2 对象适配器模式 377
- 20.6 Android源码中的适配器模式 379
- 20.7 深度拓展 385
- 20.8 实战演示 398
- 20.9 小结 407
- 第21章 装饰模式 408
- 21.1 装饰模式介绍 408
- 21.2 装饰模式的定义 408
- 21.3 装饰模式的使用场景 408
- 21.4 装饰模式的UML类图 408
- 21.5 模式的简单实现 411
- 21.6 Android源码中的模式实现 413
- 21.7 Context与ContextImpl 415
- 21.8 模式实战 423
- 21.9 小结 424
- 第22章 对象共享,避免创建多对象——
- 享元模式 425
- 22.1 享元模式介绍 425
- 22.2 享元模式定义 425
- 22.3 享元模式的使用场景 425
- 22.4 享元模式的UML类图 425
- 22.5 享元模式的简单示例 426
- 22.6 Android源码中的享元模式 429
- 22.7 深度拓展 434
- 22.7.1 深入了解Android的消息
- 机制 434
- 22.7.2 子线程中创建Handler为何会抛出异常 443
- 22.8 小结 444
- 第23章 统一编程接口——外观模式 445
- 23.1 外观模式介绍 445
- 23.2 外观模式定义 445
- 23.3 外观模式的使用场景 445
- 23.4 外观模式的UML类图 445
- 23.5 外观模式的简单示例 446
- 23.6 Android源码中的外观模式 448
- 23.7 深度拓展 452
- 23.7.1 Android资源的加载与匹配 452
- 23.7.2 动态加载框架的实现 459
- 23.8 外观模式实战 466
- 23.9 小结 468
- 第24章 连接两地的交通枢钮——
- 桥接模式 470
- 24.1 桥接模式介绍 470
- 24.2 桥接模式的定义 470
- 24.3 桥接模式的使用场景 470
- 24.4 桥接模式的UML类图 470
- 24.5 桥接模式的简单实现 472
- 24.6 Android源码中的桥接模式实现 475
- 24.7 关于WindowManagerService 476
- 24.8 桥接模式实战 484
- 24.9 小结 487
- 第25章 MVC的介绍与实战 488
- 25.1 MVC的历史与结构的演化 488
- 25.2 MVC的应用浅析 494
- 25.3 MVC在Android中的实现 499
- 25.4 MVC框架模式与设计模式 503
- 第26章 MVP应用架构模式 504
- 26.1 MVP模式介绍 504
- 26.2 MVP模式的三个角色 505
- 26.3 NavigationView中的MVP模式 505
- 26.4 MVP的实现 513
- 26.5 MVP与Activity、Fragment的生命
- 周期 517
- 第27章 MVVM应用浅析 520
- 27.1 MVVM模式介绍 520
- 27.2 MVVM的基本结构 521
- 27.3 View与ViewModel之间的交互 522
- 27.4 MVVM在Android中的应用与DataBinding使用浅析 523
- 27.5 MVVM的优缺点 530
- 27.6 MVC、MVP与MVVM的异同 530
- 27.7 小结 531
- 第28章 易混淆的设计模式 532
- 28.1 简单工厂、工厂方法、抽象工厂、
- Builder模式的区别 532
- 28.2 代理与装饰模式、桥接模式 538
- 28.3 外观模式与中介模式 543
- 28.4 策略与状态模式、命令模式 547
- 28.5 结束语 553