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標記單例方法

歡迎使用和提問

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章