Android优化module相互调用,通过开放接口的方式进行解耦

引言:

  在日常的开发中会遇到项目比较大,会根据代码功能进行对代码拆分成多个Module。拆分后遇到Module相互调用的问题采取的办法一般如下:

  • Module相互引用,直接进行调用。
  • 使用公共module申明接口,其它module分别进行实现和接口调用。然后在主Module中设置接口的实现。
  • 后来发现ARouter中也有与本文相似思路的实现,但是一直没有用过(此文章献丑了,考虑自己已经写完了,而且使用起来还是有点差别的,这个插件还是发出来吧)

  写这个插件的思路主要是想到了java的SPI(Service Provider Interface),考虑如何让META-INF/services下的配置文件自动生成(AutoService)、单例的接口实现如何获取,到最后使用Transform提前注册避免在运行时通过META-INF/services构建影响性能。

插件:

ServiceProviderBuilder

  插件的使用在github中有详细的介绍。不在此处多言。主要介绍一下使用插件的优点:

  • 支持接口与实现的指定,使用@ServiceProvider@ServiceImplementation分别标记接口和需要被构建的实现
  • 支持一个接口多实现
  • 支持一个实现有多个多接口
  • 可以加载构造私有的单例实现,使用@BuildService标记单例方法

欢迎使用和提问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值