在做Android软件开发已经4个年头了,跟随着Android一步一步成长,基于Android开源的特性,在开始工作的前几年与大家一样都乐于去折腾具体功能实现,自定义View,网络库封装。。等等,但是随着Android的三方库越发完善,同时产品需求的快速迭代,项目的飞速扩展,为了能够适应这种高效的开发需求。等着大家的另一个问题就是android项目架构的搭建。
那么在开始一个项目的架构搭建,首先需讨论的问题是:通过架构能解决什么问题?,尽管会因为项目的差异导致基础架构实现方式有所不同,但是任何架构中都会遵循一系列的习惯原则:
框架独立性
可测试
UI独立性
数据库独立性
任何外部代理模块的独立性
基于以上,在团队开发中我们对于Android的项目架构可以从三个层次去具体阐述:
1.路由模式(宏观上实现功能模块的解耦性,实现模块化开发)
图画的有点丑,将就看吧,表达的意思通过module层的外层搭建,实现模块间解耦,进一步达到可插拔,可测试,便维护的特点。
ps:router 是module间的耦合层
common module是提供各个module对外的接口和实体
2.Mvp编程模式(Module中实现数据(Data)与视图层(View)之间的解耦)
网上文章一大堆,总结下来主要有下面几个优点:
代码解耦、结构更清晰
更好的拓展性
可复用性
利于单元测试
优点其实主要是相对传统MVC结构而言的,简单对比下:
MVC(Model-View-Controller)
传统MVC结构中,C承担着一个总控制器的作用,处理Model数据,再控制View的显示。
大部分时候Activity类就是这个角色,我们在Activity中调用接口,接口返回数据后各种setText setImage显示到UI上。
MVP(Model-View-Presenter)
重点在于Presenter,它其实是将Model和View分开了,在其中起到一个中转站的角色。
把Model数据拿来一通处理,然后丢给View让它自己去解决具体的UI显示。
打个比方
如果处理Model处理业务逻辑就是加工食材做菜。把菜送到客户手里呈现给客户就是View的展示。
那MVC就是大排档。C就是独自运营的老板,自己炒菜,做完再自己送到小桌子上的客户面前,一条龙。
MVP就是正规大餐厅,P则是后厨中心,海绵宝宝做好蟹黄堡后放到窗口处,叮一下通知前台好了可以送餐了,不用关心菜是怎么送到客户手里的。然后由服务员章鱼哥在窗口处取了餐,再或跑或跳或踩着轱辘鞋最后送到客户手里,合作完成。
所以这里也可以看出来,MVP最重要的特点就是:
将 Model业务逻辑处理 和 View页面处理 分开!!
3.Java的面向对象的原则(面对接口的编程,保证了业务层与实现层的分离,并且有很好的拓展性)
基于以上3点架构开发的原则,相信对于具体的实现理解就非常的简单了,闲来抽取了简单的架构和大家分享
项目地址:https://github.com/MyAndroidP/ZQFramework
1.baselibarary(基库)
使用Dagger2实现依赖注入
使用RxJava配合Retrofit2做网络请求
使用MVP架构整个项目
使用Glide做图片的处理和加载
使用RecyclerView实现下拉刷新、上拉加载(刷新使用Google原生swipe)使用
使用Realm做数据库管理
2.H5module(功能模块)
webview 轻量级的封装
提供对外数据调用的接口
3.appmodule(耦合层)
功能模块的整合