Android中怎么实现代理模式
这篇文章给大家介绍Android中怎么实现代理模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
代理模式
代理模式(Proxy Pattern):为访问对象提供一个代理对象来实现对被访问者的访问,其实就是在访问对象与被访问对象之间添加一个中介,用来隔离访问者与被访问者的具体实现细节。它是一种结构型设计模式。
模式结构
抽象对象:声明了目标对象和代理对象的共同接口;
目标对象:被代理或者被访问的对象;
代理对象:代理对象内部持有目标对象的引用,代理对象与目标对象实现相同的接口, Client 访问代理对象相当于间接访问目标对象。
图片来自于网络
模式实现
下面是一个非常简单的例子。
抽象对象
目标对象
代理对象
Client
Running
Android 中的代理模式
Android Binder 类是实现进程间通信的媒介,由于进程间通信贯穿四大组件使用的始末,所以在 Android 开发过程中进程间通信随处可见,而 Android Binder IPC 模型是基于代理模式。
Android Binder IPC 通信模型:
Client : 持有 Server 的本地 Binder 对象的代理对象;
Server : 持有本地 Binder 对象,为 Client 端提供功能性服务;
ServiceManager : 负责管理 Binder 服务,可以根据 Binder Name 获取 Binder 引用,功能类似于 DNS 服务器;
Binder 驱动 : Client 与 Server ,以及 Server 与 ServiceManager 之间的通信都会经过 Binder 驱动,维持 Binder Proxy 与 Binder 实体引用之间的映射,根据 Client 端由 Binder Proxy 打包发送过来数据包,调用 Server 方法,再将返回结果打包由 Binder Proxy 传回 Client 端。
下面实现一个最简单的 Binder IPC 模型:
抽象对象接口
目标对象(Binder 本地对象)
代理对象
Client
代理模式的优点和缺点
优点
降低访问者与被访问者之间的耦合度
可以控制访问者对被访问者的访问权限
虚拟代理通过使用一个小对象来代理一个大对象,可以减少系统开销
缺点
代理对象会增加逻辑的复杂度
减慢对目标对象的访问速度
关于Android中怎么实现代理模式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。