Android技术

内存泄漏
两个生命周期不同的对象引用了同一个对象,Handler和Activity

kotlin
mvp+dagger+arouter实现模块化
rxjava、retrofit
谷歌livedata+viewmodel实现生命周期管理
热修复+插件化
增量更新https://www.bilibili.com/video/av74137113?p=35

单例模式
单例的集中模式

观察者模式
rxjava、eventbus
观察者模式首先有抽象观察者(监听接口)、具体观察者(实现监听接口的对象),被观察者。
下载文件为例,被观察者就是具体的下载对象;下载过程会发生准备完成、下载进度、下载完成、下载出错的可能,那么定义一个下载监听接口;具体观察者实现这个监听接口;并绑定,就可以实现监听。

生产消费模式
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。
阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。
Android技术_第1张图片
代理模式
代理可以对实现类进行统一的管理,如在调用具体实现类之前,需要打印日志等信息,这样我们只需要添加一个代理类,在代理类中添加打印日志的功能,然后调用实现类,这样就避免了修改具体实现类。
静态代理类只能为特定的接口(Service)服务。如想要为多个接口服务则需要建立很多个代理类。
动态代理是在运行时,通过反射机制实现动态代理,并且能够代理各种类型的对象

比如日志系统、事务、拦截器、权限控制等

抽象主题(Subject)角色:真实主题与代理主题的共同接口。
真实主题(RealSubject)角色:定义了代理角色所代表的真实对象。
代理主题(Proxy)角色:含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真是主题对象之前或者之后执行某些操作,而不是单纯返回真实的对象。

即静态代理类只能为特定的接口(Service)服务。如想要为多个接口服务则需要建立很多个代理类。

建造者模式
以摄像头为例,一开始只可以调节曝光度、分辨率。随着配置越多,构造函数越多,也越复杂。但是对于我来说,可能只关心几个配置,其它配置保持默认,所以当我们配置越来越多,只需要修改建造者。

工厂模式
有时候我们只需要一个摄像头,我们不关心这个摄像头是怎么配置,这时候可以使用工厂模式,工厂放回一个配置好的摄像头给我们。

首先,工厂模式是为了解耦:把对象的创建和使用的过程分开。就是Class A 想调用 Class B ,那么A只是调用B的方法,而至于B的实例化,就交给工厂类。

其次,工厂模式可以降低代码重复。如果创建对象B的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。我们可以这些创建对象B的代码放到工厂里统一管理。既减少了重复代码,也方便以后对B的创建过程的修改维护。(当然,我个人觉得也可以把这些创建过程的代码放到类的构造函数里,同样可以降低重复率,而且构造函数本身的作用也是初始化对象。不过,这样也会导致构造函数过于复杂,做的事太多,不符合java 的设计原则。)

适配器模式
我现在有一套操作密码键盘的接口,现在新来了一款密码键盘,接口名称和我们的不一样,但是功能一样,需要将新密码键盘的接口适配我们现在用的接口

你可能感兴趣的:(Android技术)