具体描述
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介者模式、代理模式、组合模式、适配器模式、装饰模式、享元模式、外观模式、桥接模式,以及MVC的介绍与实战和MVP应用架构模式。每个章节都对某个模式做了深入的分析,并且会对模式相关的技术点进行深入拓展,让读者在掌握模式的同时学习到Android中的一些重要知识,通过实战帮助读者达到学以致用的目的,且能够将模式运用于项目中,开发出高质量的程序。
本书适合的读者为初、中、高级Android工程师,也可以作为大专院校相关师生的学习用书和培训学校的教材。
作者简介
阿里巴巴旗下友盟的高级程序员,CSDN博客专家,在开源社区做了大量的工作,贡献了许多模式设计的技术。
目录信息
1.1 优化代码的第一步——单一职责原则 1
1.2 让程序更稳定、更灵活——开闭原则 5
1.3 构建扩展性更好的系统——里氏替换原则 12
1.4 让项目拥有变化的能力——依赖倒置原则 13
1.5 系统有更高的灵活性——接口隔离原则 16
1.6 更好的可扩展性——迪米特原则 18
1.7 总结 22
第2章 应用最广的模式——单例模式 23
2.1 单例模式介绍 23
2.2 单例模式的定义 23
2.3 单例模式的使用场景 23
2.4 单例模式UML类图 23
2.5 单例模式的简单示例 24
2.6 单例模式的其他实现方式 26
2.6.1 懒汉模式 26
2.6.2 Double CheckLock ( DCL )
实现单例 26
2.6.3 静态内部类单例模式 27
2.6.4 枚举单例 28
2.6.5 使用容器实现单例模式 28
2.7 Android源码中的单例模式 29
2.8 无名英雄——深入理解LayoutInflater 33
2.9 运用单例模式 40
2.10 总结 42
第3章 自由扩展你的项目——Builder模式 43
3.1 Builder模式介绍 43
3.2 Builder模式的定义 43
3.3 Builder模式的使用场景 43
3.4 Builder模式的UML类图 43
3.5 Builder模式的简单实现 44
3.6 Android源码中的Builder模式实现 46
3.7 深入了解WindowManager 52
3.8 Builder模式实战 59
3.9 总结 64
第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章 应用最广泛的模式——工厂方法模式 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 总结 116
第7章 时势造英雄——策略模式 117
7.1 策略模式介绍 117
7.2 策略模式的定义 117
7.3 策略模式的使用场景 117
7.4 策略模式的UML类图 118
7.5 策略模式的简单实现 118
7.6 Android源码中的策略模式实现 123
7.6.1 时间插值器 123
7.6.2 动画中的时间插值器 124
7.7 深入属性动画 128
7.7.1 属性动画体系的总体设计 128
7.7.2 属性动画的核心类介绍 128
7.7.3 基本使用 129
7.7.4 流程图 130
7.7.5 详细设计 131
7.7.6 核心原理分析 131
7.8 策略模式实战应用 142
7.9 总结 144
第8章 随遇而安——状态模式 145
8.1 状态模式介绍 145
8.2 状态模式的定义 145
8.3 状态模式的使用场景 145
8.4 状态模式的UML类图 145
8.5 状态模式的简单示例 146
8.6 Wi-Fi管理中的状态模式 150
8.7 状态模式实战 159
8.8 总结 164
第9章 使编程更有灵活性——责任链模式 165
9.1 责任链模式介绍 165
9.2 责任链模式的定义 165
9.3 责任链模式的使用场景 165
9.4 责任链模式的UML类图 165
9.5 责任链模式的简单实现 170
9.6 Android源码中的责任链模式实现 173
9.7 责任链模式实战 178
9.8 总结 181
第10章 化繁为简的翻译机——解释器模式 182
10.1 解释器模式介绍 182
10.2 解释器模式的定义 182
10.3 解释器模式的使用场景 183
10.4 解释器模式的UML类图 184
10.5 解释器模式的简单实现 185
10.6 Android源码中的解释器模式实现 189
10.7 关于PackageManagerService 195
10.8 总结 203
第11章 让程序畅通执行——命令模式 204
11.1 命令模式介绍 204
11.2 命令模式的定义 204
11.3 命令模式的使用场景 204
11.4 命令模式的UML类图 204
11.5 命令模式的简单实现 207
11.6 Android源码中的命令模式实现 211
11.7 Android事件输入系统介绍 214
11.8 命令模式实战 216
11.9 总结 223
第12章 解决、解耦的钥匙——观察者模式 224
12.1 观察者模式介绍 224
12.2 观察者模式的定义 224
12.3 观察者模式的使用场景 224
12.4 观察者模式的UML类图 224
12.5 观察者模式的简单实现 225
12.6 Android源码分析 227
12.7 观察者模式的深入拓展 230
12.8 实战 238
12.9 总结 245
第13章 编程中的“后悔药”——备忘录模式 247
13.1 备忘录模式介绍 247
13.2 备忘录模式的定义 247
13.3 备忘录模式的使用场景 247
13.4 备忘录模式的UML类图 247
13.5 备忘录模式的简单示例 248
13.6 Android源码中的备忘录模式 250
13.7 深度拓展 257
13.7.1 onSaveInstanceState调用的时机 257
13.7.2 使用V4包存储状态的bug 257
13.8 实战 260
13.9 总结 267
第14章 解决问题的“第三者”——迭代器模式 268
14.1 迭代器模式介绍 268
14.2 迭代器模式的定义 268
14.3 迭代器模式的使用场景 268
14.4 迭代器模式的UML类图 268
14.5 模式的简单实现 271
14.6 Android源码中的模式实现 275
14.7 总结 277
第15章 抓住问题核心——模板方法模式 278
15.1 模板方法模式介绍 278
15.2 模板方法模式的定义 278
15.3 模板方法模式的使用场景 278
15.4 模板方法模式的UML类图 278
15.5 模板方法模式的简单示例 279
15.6 Android源码中的模板方法模式 281
15.7 深度拓展 283
15.8 模板方法实战 296
15.9 总结 299
第16章 访问者模式 301
16.1 访问者模式介绍 301
16.2 访问者模式的定义 301
16.3 访问者模式的使用场景 301
16.4 访问者模式的UML类图 301
16.5 访问者模式的简单示例 302
16.6 Android源码中的模式 306
16.7 访问者模式实战 309
16.8 总结 316
第17章 “和事佬”——中介者模式 317
17.1 中介者模式介绍 317
17.2 中介者模式的定义 318
17.3 中介者模式的使用场景 318
17.4 中介者模式的UML类图 318
17.5 中介者模式的简单实现 320
17.6 Android源码中的中介者模式实现 324
17.7 中介者模式实战 326
17.8 总结 329
第18章 编程好帮手——代理模式 330
18.1 代理模式介绍 330
18.2 代理模式的定义 330
18.3 代理模式的使用场景 330
18.4 代理模式的UML类图 330
18.5 代理模式的简单实现 332
18.6 Android源码中的代理模式实现 336
18.7 Android中的Binder跨进程通信机制与AIDL 340
18.8 代理模式实战 351
18.9 总结 355
第19章 物以类聚——组合模式 356
19.1 组合模式介绍 356
19.2 组合模式的定义 357
19.3 组合模式的使用场景 357
19.4 组合模式的UML类图 357
19.5 组合模式的简单实现 363
19.6 Android源码中的模式实现 367
19.7 为什么ViewGroup有容器的功能 368
19.8 总结 370
第20章 得心应手的“粘合剂”——适配器模式 371
20.1 适配器模式介绍 371
20.2 适配器模式的定义 371
20.3 适配器模式的使用场景 371
20.4 适配器模式的UML类图 371
20.5 适配器模式应用的简单示例 372
20.5.1 类适配器模式 372
20.5.2 对象适配器模式 373
20.6 Android源码中的适配器模式 375
20.7 深度拓展 380
20.8 实战演示 393
20.9 总结 402
第21章 装饰模式 403
21.1 装饰模式介绍 403
21.2 装饰模式的定义 403
21.3 装饰模式的使用场景 403
21.4 装饰模式的UML类图 403
21.5 模式的简单实现 406
21.6 Android源码中的模式实现 408
21.7 Context与ContextImpl 410
21.8 模式实战 419
21.9 总结 419
第22章 对象共享,避免创建多对象——享元模式 420
22.1 享元模式介绍 420
22.2 享元模式定义 420
22.3 享元模式的使用场景 420
22.4 享元模式的UML类图 420
22.5 享元模式的简单示例 421
22.6 Android源码中的享元模式 424
22.7 深度拓展 429
22.7.1 深入了解Android的消息机制 429
22.7.2 子线程中创建Handler为何会抛出异常 438
22.8 总结 439
第23章 统一编程接口——外观模式 440
23.1 外观模式介绍 440
23.2 外观模式定义 440
23.3 外观模式的使用场景 440
23.4 外观模式的UML类图 440
23.5 外观模式的简单示例 441
23.6 Android源码中的外观模式 443
23.7 深度拓展 448
23.7.1 Android资源的加载与匹配 448
23.7.2 动态加载框架的实现 455
23.8 外观模式实战 461
23.9 总结 464
第24章 连接两地的交通枢钮——桥接模式 465
24.1 桥接模式介绍 465
24.2 桥接模式的定义 465
24.3 桥接模式的使用场景 465
24.4 桥接模式的UML类图 465
24.5 桥接模式的简单实现 467
24.6 Android源码中的桥接模式实现 470
24.7 关于WindowManagerService 471
24.8 桥接模式实战 479
24.9 总结 482
第25章 MVC的介绍与实战 483
25.1 MVC的起源与历史 483
25.2 MVC在Android中的实现 484
25.3 总结 486
第26章 MVP应用架构模式 487
26.1 MVP模式介绍 487
26.2 MVP模式的三个角色 488
26.3 与MVC、MVVM的区别 488
26.4 MVP的实现 489
26.5 MVP与Activity、Fragment的生命周期 493
· · · · · · (收起)
读后感
想写一本Android设计模式的书的念头由来已久,也许是从我开始接触Android开发后就有了,于是很早就在自己的记事本上记录了一些相关学习心得。2014年4月我就在博客上连载了《Android源码分析之设计模式》系列,简单分析Android源码中的一些设计模式。到了2014年年底开始写一些开...
想写一本Android设计模式的书的念头由来已久,也许是从我开始接触Android开发后就有了,于是很早就在自己的记事本上记录了一些相关学习心得。2014年4月我就在博客上连载了《Android源码分析之设计模式》系列,简单分析Android源码中的一些设计模式。到了2014年年底开始写一些开...
想写一本Android设计模式的书的念头由来已久,也许是从我开始接触Android开发后就有了,于是很早就在自己的记事本上记录了一些相关学习心得。2014年4月我就在博客上连载了《Android源码分析之设计模式》系列,简单分析Android源码中的一些设计模式。到了2014年年底开始写一些开...
想写一本Android设计模式的书的念头由来已久,也许是从我开始接触Android开发后就有了,于是很早就在自己的记事本上记录了一些相关学习心得。2014年4月我就在博客上连载了《Android源码分析之设计模式》系列,简单分析Android源码中的一些设计模式。到了2014年年底开始写一些开...
想写一本Android设计模式的书的念头由来已久,也许是从我开始接触Android开发后就有了,于是很早就在自己的记事本上记录了一些相关学习心得。2014年4月我就在博客上连载了《Android源码分析之设计模式》系列,简单分析Android源码中的一些设计模式。到了2014年年底开始写一些开...
用户评价
这本书的封面设计挺吸引我的,一股浓浓的技术氛围扑面而来,我一直觉得,了解一门技术,尤其是像Android这样庞大而复杂的系统,仅仅停留在API的使用层面是远远不够的。深入到源码层面,去剖析那些隐藏在代码背后的设计思想和模式,才能真正领悟到其中的精髓。我希望这本书能够带领我踏上这段探索之旅,让我不再被纷繁复杂的API所迷惑,而是能从更宏观、更本质的角度去理解Android的运作机制。尤其是在读到“设计模式”这个关键词的时候,我脑海中立刻浮现出单例、工厂、观察者等等那些耳熟能详的设计模式,它们在各种软件开发场景中都扮演着至关重要的角色。我非常期待这本书能结合Android的实际源码,生动形象地展示这些设计模式是如何被巧妙地应用,又是如何解决实际开发中遇到的各种问题的。我希望通过这本书的学习,能够提升我分析和解决复杂问题的能力,让我在面对新的需求和挑战时,能够更加游刃有余,写出更优雅、更健壮的代码。
收到这本书的那一刻,我就迫不及待地翻开了。从目录上看,内容就相当充实,涵盖了Android开发的方方面面,而且特别强调了“源码”和“设计模式”这两个硬核概念,这正是我目前非常想深入学习的方向。我感觉很多时候,我们虽然能写出能跑的代码,但在性能优化、代码复用、系统扩展性等方面却力不从心,这往往是因为我们对底层原理和设计理念理解不够透彻。我相信,通过学习这本书,我能系统地梳理Android的源码脉络,理解那些经典的设计模式是如何在Android框架中落地生根的。我尤其期待书中能够提供一些具体的代码示例,并且能够详细地讲解这些示例背后的设计思路,这样学习起来会更加直观和有条理。我希望这本书能成为我提升Android开发内功的一本“秘籍”,让我能够真正做到“知其然,更知其所以然”,从而在日后的开发工作中,能够写出更具匠心的作品。
拿到这本书,我的第一感觉就是“硬核”。“源码”、“设计模式”这些字眼,对于任何一个有追求的Android开发者来说,都极具吸引力。我之前在开发过程中,经常会遇到一些难以解决的性能瓶颈或者代码维护的难题,这些问题往往追根溯源,都能看到设计上的不足。我深知,要真正提升自己的技术水平,就必须回归到技术的本源,去理解那些支撑起整个Android系统运行的设计思想和模式。我非常期待这本书能够像一位经验丰富的向导,带领我深入Android的源码森林,去探索那些隐藏在代码深处的智慧结晶。我希望它能用一种深入浅出、由浅入深的方式,将那些复杂的设计模式转化成清晰易懂的逻辑,并通过实际的源码分析,让我能够切身感受到这些模式的强大之处。我相信,通过这本书的学习,我一定能够大幅度提升我对Android的理解深度,为我今后的开发生涯打下坚实的基础。
我一直觉得,Android开发就像是在一座庞大的城市里建造摩天大楼。你可能学会了如何使用砖瓦、钢筋水泥(API),也能搭起一层层的楼房,但如果你想建造更高、更稳固、更具艺术感的建筑,你就必须了解这座城市的整体规划、建筑的力学原理以及各种先进的建造技术(源码设计模式)。这本书的出现,恰恰满足了我对这座城市“规划图”和“建造手册”的渴望。我迫切地想知道,Android这个宏伟的“城市”是如何规划布局的,那些“摩天大楼”又是如何运用“设计模式”这个“建造技术”来得以实现的。我期待它能带领我穿梭于Android的源码之间,解开那些看似复杂却又巧妙的设计。我希望这本书能让我告别“知其然而不知其所以然”的尴尬,让我能够从更深层次去理解Android的运行机制,从而在自己的开发实践中,也能借鉴这些优秀的“建造理念”,打造出更具竞争力的应用。
说实话,我选择这本书,很大程度上是因为它的标题。“源码”、“设计模式”、“解析”、“实战”这几个词组合在一起,简直就是我梦寐以求的Android学习路径。我一直认为,对于任何一门复杂的计算机系统,源码都是最宝贵的财富,里面蕴含着开发者最原始的智慧和最佳的实践。而设计模式,则是前人总结出来的、解决常见问题的通用解决方案,是提升代码质量和可维护性的利器。这本书将这两者结合起来,并且强调“解析”和“实战”,这让我觉得非常有价值。我希望能在这本书中看到,不仅仅是对设计模式的枯燥理论讲解,更能看到它们是如何被“翻译”成Android源码中的具体实现,以及这些实现又是如何帮助我们解决实际开发中的具体问题的。我期待通过这本书的学习,能够建立起一套扎实的Android底层知识体系,提升自己独立分析和解决复杂问题的能力,成为一名更优秀的Android工程师。
还不错,对设计模式和系统源码有了更深的了解
首先,这本书的思路特别好,设计模式本就是软件开发领域发展到一定程度时前辈们总结提炼出来的,它既来源于真枪实战的代码,要想体会其精髓,何不通过优秀的开源项目去领悟呢?Android开源系统无论从代码的复杂程度还是作者的开发水平,都是数一数二的,因此对于设计模式,Android源码不可谓不是非常优质的学习资源。那么作者就是以这样一种思路,对于每一种设计模式都是以概念—>Android源码中的应用—>源码要点解析—>设计模式实战这几方面内容来介绍的,很有意思,在学习设计模式的同时又学习了Android源代码,不足呢就是这样一种源码的学习显得不够系统,因此不那么容易掌握。此外,个人认为设计模式更多的是编程中的招式,因此想要真正地会用、用好、用还是不用仍然需要自己在今后的开发中多思考多练习。
还不错,对设计模式和系统源码有了更深的了解
binder
前几章还好,读到后面越觉晦涩。以后还要再读一遍。