自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 状态模式(State)

1、概念状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类,属于行为型模式。2、模式结构环境角色(Context):定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态角色(State):定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态角色(Concrete...

2018-11-30 11:49:30 4114

原创 解释器模式(Interpreter)

1、概念解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型模式。但其在实际的系统开发中使用的很少,因为他会引起效率、性能以及维护等问题![解释器模式](https://img-blog.csdnimg.cn/2018112910503821.jpg?x-oss-process=image/watermark,type_ZmFuZ3...

2018-11-29 10:51:07 947

原创 JNI和NDK基础

引言JNI是Java Native Interface(Java本地接口),是为了方便Java调用C和C++等本地代码所封装的一层接口。NDK是Android提供的一个工具集合,通过NDK可以在Android中更加方便地沟通JNI来访问本地代码。两者之间的关系:JNI是实现目的,NDK是在Android实现JNI的手段。使用NDK有如下好处:提供代码的安全性可以很方便的地使用目前已有...

2018-11-28 16:16:10 967

原创 备忘录模式(Memento)

1、概念备忘录模式在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便恢复到原先保存的状态,属于行为型模式。2、模式结构发起人角色(Originator):记录当前时刻的内部状态,负责定义哪些属于备份的状态,负责创建和恢复备忘录数据备忘录角色(Memento):负责存储Originator发起人对象的内部状态 ,在需要的时候提供发起人需要的内部状态备忘录管理...

2018-11-28 10:25:26 891

原创 中介者模式(Mediator)

1、概念中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,属于对象行为型模式一种。2、模式结构Mediator: 抽象中介者,定义一个接口,该接口用于与各同事对象之间进行通信 ConcreteMediator: 具体中介者,抽象中介者的子类,通过协调各个同事对象来实现协作行为,它维持了对各个同事对象...

2018-11-26 10:32:00 916

原创 访问者模式(Visitor)

1、概念访问者模式封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作,属于行为型模式一种。2、模式结构Visitor(抽象访问者):抽象访问者为对象结构中每一个具体元素类ConcreteElement声明一个访问操作,从这个操作的名称或参数类型可以清楚知道需要访问的具体元素的类型,具体访问者则需要实现这些操作方法,定义对这些元素的...

2018-11-23 11:41:00 903

原创 迭代器模式(Iterator)

1、概念迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示,属于行为模式的一种2、模式结构抽象迭代器(Iterator):此抽象角色定义出遍历元素所需的接口 具体迭代器(ConcreteIterator):此角色实现了Iterator接口,并保持迭代过程中的游标位置 抽象容器(Aggregate):容器角色负责提供创建具体迭代器角色的接口,必然提供一...

2018-11-21 10:59:00 879

原创 Android ThreadPoolExecutor线程池

引言Android的线程池概念来自于Java的Executor,真正的线程池实现为ThreadPoolExecutor。在Android中,提供了4类不同的线程池,具体下面会说到。为什么使用线程池呢?而不是使用Thread创建线程呢?因为使用线程池有以下几个优点:重用线程池的线程,避免因为线程的创建和销毁所带来的性能开销 能有效控制线程池的最大并发数,避免线程之间抢占资源导致阻塞 能够...

2018-11-20 17:18:00 887

原创 Android线程

1、引言在Android中,几乎完全采用了Java的线程机制,由于Android的特性,主线程只处理和界面相关的事情,子线程处理耗时操作。Android中扮演线程角色的有Thread、AsyncTask、IntentService和HandlerThread。对于AsyncTask来说,底层用到了线程池,对于IntentService和HandlerThread,底层用到了线程。2、Asy...

2018-11-20 16:07:00 1328

原创 命令模式(Command)

1、概念命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作,属于行为型模式的一种。2、模式结构Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现 Invoke...

2018-11-20 10:54:00 942

原创 模版方法模式(Template Method)

1、概念在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。2、模式结构抽象类(AbstractClass):定义一组基本方法供子类实现,定义并实现组合了基本方法的模板方法 具体子类 (ConcreteClass): 实现原语操作以完成算法中...

2018-11-19 10:49:00 896

原创 代理模式(Proxy)

1、概念代理模式为其他对象提供一个代理以控制对这个对象的访问,属于结构性模式。从代码的角度来分,代理可以分为两种:一种是静态代理,另一种是动态代理。静态代理就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。动态代理类的源码是在程序运行期间根据反射等机制动态的生成,所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。2、模式结构Su...

2018-11-15 11:27:00 867

原创 Android消息机制

概述  Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃,因为在ViewRootImpl.checkThread对UI操作做了验证,导致必须在主线程中访问UI,但Android在主线程中进行耗时的操作会导致ANR,为了解决子线程无法访问UI的矛盾,提供了消息机制。void checkThread() { if (mThread != Thre...

2018-11-14 15:25:00 925

原创 享元模式(Flyweight)

1、概念享元模式是运用共享技术有效地支持大量细粒度的对象,系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用,属于结构性模式。2、模式结构Flyweight: 抽象享元类,所有具体享元类的超类或者接口,通过这个接口,Flyweight可以接受并作用于外部专题 ConcreteFlyweight: 具体享元类,指定内部状态,为内部状态增加存储空间 Unshar...

2018-11-14 10:50:00 685

原创 外观模式(Facade)

1、概念外观模式是外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,属于对象结构型模式。2、模式结构Facade(Controller): 外观角色,客户端通过操作外观角色从而达到控制子系统角色的目的。对于客户端来说,外观角色好比一道屏障,对客户端屏蔽了子系统的具体实现 Sub...

2018-11-13 15:58:00 930

原创 组合模式(Composite)

1、概念组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性,属于结构性模式。2、模式结构Component:组合中的对象声明接口,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component子部件 Leaf:叶子对象,叶子结点没有子结点 Composite:容器对象,定义有枝节点行为,用来存储子部件,在Compo...

2018-11-12 11:03:00 942

原创 装饰模式(Decorator)

1、概念装饰模式动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活,属于结构性模式一种。2、模式结构抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。 具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责。 抽象装饰器...

2018-11-09 11:06:00 880

原创 桥接模式(Bridge)

1、概念桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化,属于结构性模式的一种。2、模式结构Abstraction(抽象类):定义抽象接口,拥有一个Implementor类型的对象引用,它与 Implementor 之间具有关联关系 RefinedAbstraction(扩充抽象类):扩展Abstraction中的接口定义,实现了在 Abstraction 中声明的抽象业务方...

2018-11-05 10:55:00 855

原创 Android8自定义广播无法收到消息

在Android 8之前,如果要发送自定义的静态广播,做好其他配置后,只需实例化一个Intent对象intent,然后将其作为参数传入sendBroadcast()方法中即可,例如Intent intent = new Intent(action);intent.putExtra(INTENT_DATA_PUSH, data);intent.addCategory(context.g...

2018-11-01 18:11:00 1518

原创 Activity正确获取View宽高

在View的measure完成后,一般可以通过getMeasureWidth/getMeasureWidth方法可以正确的获取View的宽高,而在特殊情况下,可能需要多次measure才能确定最终的测量宽高,onMeasure无法获取正确的宽高,但可以在onLayout方法中获取测量宽高。而在Activity生命周期方法中,是无法通过getMeasureWidth/getMeasureW...

2018-11-01 18:01:00 750

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除