作品简介

本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介者模式、代理模式、组合模式、适配器模式、装饰模式、享元模式、外观模式、桥接模式,以及MVC的介绍与实战和MVP应用架构模式。每个章节都对某个模式做了深入的分析,并且会对模式相关的技术点进行深入拓展,让读者在掌握模式的同时学习到Android中的一些重要知识,通过实战帮助读者达到学以致用的目的,且能够将模式运用于项目中,开发出高质量的程序。

本书适合的读者为初、中、高级Android工程师,也可以作为大专院校相关师生的学习用书和培训学校的教材。

何红辉、关爱民,阿里巴巴旗下友盟的高级程序员,CSDN博客专家,在开源社区做了大量的工作,贡献了许多模式设计的技术。

作品目录

  • 推荐序
  • 自序一
  • 自序二
  • 前言
  • 致谢
  • 第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 DoubleCheckLock(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的生命周期
展开全部