千家信息网

Android中怎么实现代理模式

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章给大家介绍Android中怎么实现代理模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代理模式代理模式(Proxy Pattern):为访问对象提供一个代理对象来实现对
千家信息网最后更新 2024年11月19日Android中怎么实现代理模式

这篇文章给大家介绍Android中怎么实现代理模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

代理模式

代理模式(Proxy Pattern):为访问对象提供一个代理对象来实现对被访问者的访问,其实就是在访问对象与被访问对象之间添加一个中介,用来隔离访问者与被访问者的具体实现细节。它是一种结构型设计模式。

模式结构

  1. 抽象对象:声明了目标对象和代理对象的共同接口;

  2. 目标对象:被代理或者被访问的对象;

  3. 代理对象:代理对象内部持有目标对象的引用,代理对象与目标对象实现相同的接口, 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中怎么实现代理模式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0