![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 源码设计模式
okclouderx
这个作者很懒,什么都没留下…
展开
-
Android 源码设计模式总结
Android 源码设计模式总结设计模式可以按照创建型设计模式、结构型设计模式、行为型设计模式分为 3 类,共 23 种设计模式。创建型设计模式创建型设计模式共有 5 种。工厂方法 Factory MethodAndroid 源码的工厂方法模式抽象工厂 Abstract FactoryAndroid 源码的抽象工厂模式建造者 BuilderAndroid 源码的建造者模式原型 ...原创 2019-12-01 23:06:19 · 148 阅读 · 0 评论 -
Android 源码的单例模式
Android 的单例模式单例模式可以保证在内存中只有一个实例,可以避免对象频繁地创建与消耗。下面以 android 29 为例,看 2 种单例的实现。SystemServiceRegistry 的 LayoutInflaterContext 的实现类 ContextImpl 中保存了所有 Service 本地代理的缓存。常用的 Context 的 getSystemService 方法就...原创 2019-10-23 01:28:01 · 235 阅读 · 0 评论 -
Android 源码的建造者模式
Android 源码的建造者模式建造者模式可以将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。以 android 29 的代码为例,介绍 AlertDialog.Builder 和 ActivityStarter.Request。AlertDialog.BuilderAndroid 对话框 AlertDialog 的构建过程是一个典型的建造者模式,它的构造依赖内部...原创 2019-10-24 00:18:01 · 207 阅读 · 0 评论 -
Android 源码的原型模式
Android 源码的原型模式原型模式介绍原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。原型模式的定义用原型实例指定创建对象的种类,...原创 2019-10-25 23:50:28 · 189 阅读 · 0 评论 -
Android 源码的工厂方法模式
Android 源码的工厂方法模式工厂方法模式介绍工厂方法模式(Factory Pattern),是创建型设计模式之一。工厂方法模式是一种结构简单的模式,比如 Android 中的 Activity 里的各个生命周期方法,以 onCreate 方法为例,它可以看作是一个工厂方法,我们在其中可以构造 View,通过 setContentView 返回给 framework 处理。工厂方法模式的...原创 2019-10-27 23:48:26 · 380 阅读 · 0 评论 -
Android 源码的抽象工厂模式
Android 源码的抽象工厂模式抽象工厂模式介绍抽象工厂模式也是创建型模式之一。抽象工厂模式起源于以前对不同操作系统的图形化解决方案。如不同操作系统中的按钮和文本框控件实现不同,展示效果也不一样,对于每个操作系统,其本身就构成一个产品类,而按钮与文本框控件也构成一个产品类,两种产品类两种变化,各自有自己的特性。抽象工厂模式的定义为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定...原创 2019-10-28 23:54:03 · 218 阅读 · 0 评论 -
Android 源码的策略模式
Android 源码的策略模式策略模式介绍实现某一个功能可以有多种算法或者策略,我们根据实际情况选择不同的算法或者策略来完成该功能。例如,排序算法,可以使用插入排序、归并排序、冒泡排序等。如果将这些算法或者策略抽象出来,提供一个统一的接口,不同的算法或者策略有不同的实现类,这样在程序客户端就可以通过注入不同的实现对象来实现算法或者策略的动态替换,这种模式的可扩展性、可维护性也就更高,也就是我...原创 2019-10-31 23:55:08 · 226 阅读 · 0 评论 -
Android 源码的状态模式
Android 源码的状态模式状态模式介绍状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。状态模式和策略模式的结构几乎完全一样,但它们的目的、本质却完全不一样。状态模式的行为是平行的、不可替换的,策略模式的行为是彼此独立、可相互替换的。用一句话来表述,状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。状态模式的意图是让一个对象在其内部状态改变的时...原创 2019-11-02 00:49:53 · 289 阅读 · 1 评论 -
Android 源码的责任链模式
Android 源码的责任链模式责任链模式介绍责任链模式是行为型设计模式之一。多个节点首尾相连接所构成的模型称为链。对于链式结构,每个节点都可以被拆开再连接,因此,链式结构也具有很好的灵活性。将这样一种结构应用于编程领域,将每一个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。我们将这种模式称为责任...原创 2019-11-05 00:18:10 · 161 阅读 · 0 评论 -
Android 源码的解释器模式
Android 源码的解释器模式解释器模式介绍解释器模式是一种用得比较少的行为型模式,其提供了一种解释语言的语法或表达式的方式。该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。解释器模式的定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。PackageParserAndroid 的 PackageParser 类对 Andro...原创 2019-11-07 00:04:51 · 279 阅读 · 0 评论 -
Android 源码的命令模式
Android 源码的命令模式命令模式介绍命令模式是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很“规矩”的模式,不过,就是基于这一点,命令模式相对于其他的设计模式更为灵活多变。我们接触比较多的命令模式个例无非是程序菜单命令,如在操作系统中,我们点击“关机”命令,系统就会执行一系列的操作,如先是暂停处理事件,保存系统的一些配置,然后结束程序进程,最...原创 2019-11-08 23:45:07 · 172 阅读 · 0 评论 -
Android 源码的观察者模式
Android 源码的观察者模式观察者模式介绍观察者模式是一个使用率非常高的模式,它最常用的地方是 GUI 系统、订阅-发布系统。因为这个模式的一个非常重要的作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以 GUI 系统来说,应用的 UI 具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也会经常性变化,但是业务逻辑基本变化不大,此时,GUI ...原创 2019-11-09 23:57:58 · 153 阅读 · 0 评论 -
Android 源码的备忘录模式
Android 源码的备忘录模式备忘录模式介绍备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态,这有点像我们平时说的“后悔药”。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。备忘录模式的定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样...原创 2019-11-10 23:57:50 · 1321 阅读 · 0 评论 -
Android 源码的迭代器模式
Android 源码的迭代器模式迭代器模式的介绍迭代器模式(Iterator Pattern) 又称为游标(Cursor)模式,是行为型设计模式之一。迭代器模式是一个比较古老的设计模式,其源于对容器的访问,比如 Java 中的 List、Map、数组等。迭代器模式的定义提供一个方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。Android 源码中的迭代器模式And...原创 2019-11-12 23:59:45 · 153 阅读 · 0 评论 -
Android 源码的模板方法模式
Android 源码的模板方法模式模板方法模式介绍在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变的。例如,执行程序的流程大致如下:检查代码的正确性链接相关的类库编译相关代码执行程序对于不同的程序设计语言,上述 4 个步骤都是不一样的,但是它们...原创 2019-11-15 23:58:10 · 149 阅读 · 0 评论 -
Android 源码的访问者模式
Android 源码的访问者模式访问者模式介绍访问者模式是一种将数据操作与数据结构分离的设计模式,它是 23 种设计模式中最复杂的一个,但是它的使用频率并不高,正如《设计模式》的作者 GOF 对访问者模式的描述:大多数情况下,并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是真的需要它了。访问者模式的基本想法是,软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥...原创 2019-11-16 23:20:45 · 314 阅读 · 0 评论 -
Android 源码的中介者模式
Android 源码的中介者模式中介者模式介绍中介者模式(Mediator Pattern)也成为调解者模式或者调停者模式,Mediator 本身就有调停者和调解者的意思。中介者模式的定义中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。中介...原创 2019-11-17 23:58:39 · 306 阅读 · 0 评论 -
Android 源码的代理模式
Android 源码的代理模式代理模式介绍代理模式(Proxy Pattern)也称为委托模式,是结构型设计模式的第一个模式。代理模式的定义为其他对象提供一种代理以控制对这个对象的访问。代理模式的使用场景当无法或不想直接访问某个对象或访问某个对象存在困难时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。Android 源码中的代理模...原创 2019-11-18 23:57:30 · 651 阅读 · 0 评论 -
Android 源码的组合模式
Android 源码的组合模式组合模式介绍组合模式(Composite Pattern)也称为部分整体模式(Part-Whole Pattern),结构型设计模式之一。组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别。组合模式的定义将对象组合成树形结构以表示“部分-整体”的层次结...原创 2019-11-23 23:59:01 · 254 阅读 · 0 评论 -
Android 源码的适配器模式
Android 源码的适配器模式适配器模式介绍适配器模式在我们的开发中使用率极高,从代码中随处可见的 Adapter 就可以判断出来。从最早的 ListView、GridView 到现在最新的 RecyclerView 都需要使用 Adapter。适配器模式的定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。Andro...原创 2019-11-24 17:41:52 · 213 阅读 · 0 评论 -
Android 源码的装饰者模式
Android 源码的装饰者模式装饰者模式介绍装饰者模式(Decorator Pattern)也称为包装模式 (Wrapper Pattern),结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象地功能,同时它也是继承关系的一种替代方案之一。装饰者模式的定义动态地给一个对象添加一些额外的职责。就增加功能来说,装饰者模式相比生成子类更为灵活。装饰模式的使用场景需要透明且动态...原创 2019-11-24 23:51:07 · 243 阅读 · 0 评论 -
Android 源码的享元模式
Android 源码的享元模式享元模式介绍享元模式是对象池的一种实现,它的英文名称叫做 Flyweight,代表轻量级的意思。享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样一来就可以提升性能、避免内存移除等。享元模式定义使用共享对象可有效地支持大量地细粒度的对象。Android 源码中的享元模式Ha...原创 2019-11-25 23:53:57 · 293 阅读 · 1 评论 -
Android 源码的外观模式
Android 源码的外观模式外观模式介绍外观模式(Facade)在开发过程中的运用频率非常高,尤其是在现阶段各种第三方 SDK 充斥在我们的周边,而这些 SDK 很大概率会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块、ImageLo...原创 2019-11-28 23:58:50 · 194 阅读 · 0 评论 -
Android 源码的桥接模式
Android 源码的桥接模式桥接模式介绍桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。桥接模式承担着连接两边的作用。桥接模式的定义将抽象部分与实现部分分离,使它们都可以独立地进行变化。Android 源码中的桥接模式实现Framework 内部的源码实现中,比较典型的桥接模式应用是 Window 与 WindowManager 之间的关系。在 fwk...原创 2019-11-29 23:58:32 · 455 阅读 · 0 评论