1. 模块化简介?
把一个app分为多个功能模块,比如注册、登录、推送、更新、三方支付、分享等等多个模块,然后单独开发每一个模块,然后把它们组合起来,拼出一个app,叫做模块化开发
2. 模块化架构分层?
整体架构的划分最少可以分为2层,app业务层和module框架层
1>:app业务层
app业务层指的是:具体的xml文件、Activity或Fragment具体逻辑、请求服务器接口、自定义View等等涉及到app的业务逻辑;
2>:module框架层
框架层一定要是所有项目中都可以使用到的,一定要与业务没有关系。
module层一般放:BaseActivity、BaseFragment、Utils工具类、自定义View、联网请求等等这些东西
然后把module引入项目中即可
3. 模块化好处?
1>:减少module框架层与app业务逻辑的关联
可以方便、快速的使用到其他项目中,使得其他项目可以快速集成,不需要像之前那种方式,还需要把一些类单独拷贝到项目中:比如BaseActivity、BaseFragment、Utils工具类等
2>:使代码结构清晰,减少冗余代码,提高开发效率和时间
1>:可以单独升级
因为升级的时候有可能增加资源,有可能删除资源,资源指的是图片、文字、类等等,这样做可以不和其他模块有任何关系,对这个其他功能模块影响很小;
2>:如果是带实习生开发,直接让他们做功能就行,不需要关系项目整体代码,只需要关心该模块的代码就可以;
3>:如果以后重构代码,可以只去修改某一个模块的代码,不需要修改其他功能的代码;
4. 模块化开发调用通知或者开启另一个模块的Activity
- 模块化开发后,如果想要启动另一个Activity,就不能使用intent,只能使用路由ARouter。
- 模块之间的通信可以使用广播、EventBus;
5. 注意
可以使用 aar作为模块化的 最小单位,之所以是 aar,不是jar或者library,原因如下:
1>:jar包不能带资源,比如res下的图片之类;
2>:library很容易被修改;
3>:aar好处是可以带资源并且是编译好的,不能被修改,如果想修改,可以联系做aar的人,联系他去升级就ok;
6. 总结
个人觉得,一个优秀的模块化开发框架,一定是把所有公用的模块、公用的代码全部提取到module层,而且app业务逻辑层一定是非常轻量、并且非常的稳定、易于维护。