LeakCanary实现原理
ReferenceQueueLeakCanary工具实现的最主要的原理就是利用了Java的ReferenceQueue类特性。
12Object obj = new Object();Ref ref = new Ref(obj);
上面的代码是一个典型的强引用使用场景,如果 ref 没有被系统GC ...
随笔(2020-05-21)
这是一篇加密文章,内容可能是个人情感宣泄或者保密内容,查看需输入密码。
6eb606cb1ff8d0149e8dadbf0f76761cf01ea3fb505ee030ee3482d402d8b6361093a1524070829f881272642a99c ...
使用Rxjava2操作Realm
使用Rxjava2操作Realm最近项目需要使用Realm作为本地数据库,Realm作为移动端流行数据库框架之一,自身提供的API已经非常完善且使用简单,但作为使用了RxJava全家桶的项目,直接调用Realm的API总感觉有点不爽,难道不能使用Rxjava来方便调用Realm吗?
google一下 ...
外观模式
外观模式外观模式又称为门面模式是一种比较简单但却十分常用的设计模式,它的定义是:
为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式通过提供一个外观类,来简化客户端与子系统的交互,为复杂的子系统提供一个统一的入口。
...
代理模式
代理模式代理模式是一种常见的结构型设计模式,当客户端无法直接访问某一个对象或者访问某个对象存在困难时可以通过一个代理对象来间接进行访问。在软件开发中,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场景,满足用户的不同需求。
相信作为程序员,对于google ...
装饰模式
装饰模式定义
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
在软件开发中,往往会有这样一种需求,我们需要在不改变原系统代码的时候,给一个类增加一个新的功能或特性,而Java中单继承的特性往往会限制我们对原代码的拓展。采用装饰模式可以 ...
桥接模式
桥接模式定义
将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
上面的定义太简单了点,并不能很好的解释什么是桥接模式,看了很多文章觉得还是 LoveLin的解释最为直接。
试想一下,当我 ...
适配器模式
定义将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
关于适配器模式的定义如上已经很清楚了,下面这幅图可以更清楚的帮助我们理解适配器模式。
适配器作为一个中间件,将两个不兼容的类链 ...
原型模式
原型模式定义使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。
定义很明确了,原型模式最重要的就是原型实例的克隆方法,通过克隆快速生成与原型实例相似的实例。
UML图
通过UML图可以看出原型实例主要有下面几个角色:
抽象原型实例(Prototyp ...
建造者模式
建造者模式定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
首先这是一个复杂的对象,也就是说对象的创建过程比较复杂,可能需要N多个组件来完成整个对象的创建,这个时候为了符合“单一职责”,我们将对象的构建过程分离出来,通过建造者来完成对象组件的创建,再通过一个指挥者类完成 ...