Android 源码中的责任链模式
Android 源码中的责任链模式 1、View 的 onTouchEvent() 从子 View 开始,是否消费,如果消费了,那么事件就交给该子 View 处理;如果没有消费,继续传递给其 Parent,看是否消费;这样向上传递,只要该链上有一个消费了该事件,那么事件就交给它处理。 2、OkHttp 的 Interceptor OkHttp 中的拦截器是一条链,OkHttp 中的核...
Android 源码中的责任链模式 1、View 的 onTouchEvent() 从子 View 开始,是否消费,如果消费了,那么事件就交给该子 View 处理;如果没有消费,继续传递给其 Parent,看是否消费;这样向上传递,只要该链上有一个消费了该事件,那么事件就交给它处理。 2、OkHttp 的 Interceptor OkHttp 中的拦截器是一条链,OkHttp 中的核...
访问者模式 访问者模式 访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。访问者模式主要用于修改或操作一些数据结构比较稳定的数据 ASM 用的访问者模式。 访问者模式的结构 访问者(Visitor)模式实现的关键是如何将作用于元素的操作分离出来封装成独立的类,其基本结构如下: 抽象的访问者(Visitor) 访问具体元素的接口,为每个具体元素类对应一个...
责任链模式? 是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。 将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。以上定义来自《设计模式之美》 责任链模式和分发模式的区别 观...
策略模式 策略模式定义 定义一系列的算法,把它们一个个封装起来,并且使他们可互相替换。本模式使得算法可独立与使用它的客户而变化。有个管理类 策略模式使用场景 一个类定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。 可用于替换繁杂的 if-else 判断语句 Volley 中的 HttpStack 用...
状态模式 定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 类图 角色说明: State(抽象状态角色):抽象类或者接口,定义对象的各种状态和行为。 ConcreteState(具体状态角色):实现抽象角色类,定义了本状态下的行为,即要做的事情。 Context(环境角色):定义客户端需要的接口,并且负责具体状态的切换。 ...
命令模式 什么是命令模式? 命令模式的定义 Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.(将一个请求封装成一个对象,从...
Java 单例写法 double-checked locking public final class Singleton { private Singleton() { } private static volatile Singleton INSTANCE = null; public static Singleton getInstance() { ...
代理模式 代理模式 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。比如你按照小卡片上的电话打过去寻求服务,一般不是由本人,可能是一个成年雄性接听电话,然而真正做事情的可能是另一个小姐姐。 通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性 通过代理对象对访问进行控制 代...
ViewPager 基础用法 ViewPager smoothScroll 速度控制 /** * 通过反射来修改 ViewPager的mScroller属性 */ try { Class clazz=Class.forName("android.support.v4.view.ViewPager"); Field f=clazz.getDeclaredField("mScro...
MultiDex multidex 的产生 在 Android5.0 之前,每一个 Android 应用中只会含有一个 dex 文件,因为 Android 系统本身的 bug,使得这个 dex 的方法数量被限制在 65535 之内,这就是 64K(64x1024) 事件。为了解决这个问题,Google 官方推出了 support-library 库。用起来也会有一些坑。 Android...