利用ARouter实现的模块化框架,可以单独编译运行某个module,通过开关修改依赖关系。
模块化最基本的特性就是独立,降低耦合性。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
在app开发过程中,最好的设计方式,就是当依赖解除后,app依旧能正常运行(在编译阶段),代码是可以build的,不会出错,只不过对应的代码没有实现而已。
这个框架的设计,一个是利用ARouter解决了项目间的耦合问题,第二个是提供了模块移除依赖后,可以独立运行的配置。
整个项目的框架如下图:
这里我将模块分为三层:
最上层是app层,承接所有的业务。依赖每个业务module和接口lib_base。
第二层是业务层,根据不同的需求和业务,剥离出各个module。只依赖lib_base,并且实现接口。
第三层是base层,放置各个业务暴露出来的接口,或者一些非常基础的公共类、库等。
三层逻辑中,抽离的是业务层代码,base层不作操作。所有的依赖控制,都在项目的gradle.properties文件中,用isModule的值控制。
同时在app层做好分离的build.gradle配置
在业务层module中的build.gradle配置
这里对模块做了一点小的操作,可以使模块在library和application之间切换。在实际项目中,也可以为每个module添加独有的变量开关,在开发自己模块的时候,只需先单独module运行,测试完毕后再接入app,最后进行调试。避免了整个工程运行的耗时,往往工程越大,项目跑一次的时间也就越久,从而节省时间,加快效率。
附上github地址:https://github.com/javalue/Arouter-Module