Dagger2是一个比较新、比较流行的依赖注入框架,关于依赖注入这里就不解释了,百度一大推。这里也不解释Dagger2的环境配置和粗浅的使用方式。
MVP是google官方推荐使用应用技术框架,它将之前Activity(Fragment)里面的逻辑分离出来,使用Presenter连接逻辑和界面显示,可以百度一下使用方法,这里也不详述。
本文主要讲解一下Dagger2和MVP的配合,通过讲解一个简单的例子,来描述一下在项目中应该如何去处理MVP逻辑和在哪里进行Dagger2的注入,包、类应该如何排版,关系应该如何处理,这样在以后的维护中提供最大化的简明快捷。
(注:此方式只是我个人认为比较舒适的、逻辑区分比较分明的方式,仅供参考)
请先下载项目的源代码,没有上传配置文件,只有源码,所以dagger2、OkHttp和Retrofit的配置就自己动手了!
框架简介:该Demo使用的是MVP框架,外加依赖注入,为了Demo的普遍性,使用OkHttp、Retrofit进行网络请求。我们大家都知道,使用MVP或者Dagger,或者任何一个趋于成熟的技术框架,都是为了某一个目的而会在开发期间添加一些额外的工作量,这都是为了日后的维护工作能够更好进行,减少维护成本,加快开发节奏!MVP和Dagger都是为了解耦而产生的,解耦的手段就是新增一些辅助文件,或按功能、或按模块、或按逻辑的进行更细致的划分,划分的更细,新增的java源文件也就更多了,所以我们打开下载的项目源码,就可以看到,里面的分包有很多,其实这个Demo就只有三个界面,每个界面只有两个控件,点击事件要么就是显示一行文本,要么就是模拟网络请求得到一串字符串,很简单的功能,但当你学会MVP、Dagger之后,再去看项目中的代码,你会发现,如果新增、删除一些需求,你可以很快的定位到某个文件夹下面的某个文件,甚至某行代码都可以。
说了这么多,进入正题,请看下面的分析:
首先总体分析项目中的包,大致的类、父类的关系,总包“test.zyj.com.study”下面,分别有activity、model、other、utils,根据名称就知道每个包下面是干什么的,看同级下面的类,一个应用的Application类,两个MVP中P、V基类接口,然后还有一个Dagger中的Module类,清晰明了。很多一些大的项目,其文件结构也和这个差不多,很多都是在Applicatin同级下面会有一些基类接口,其作用定义为为整个应用提供某些对象或者功能:
每一个界面,我们都当它是一个单独的模块,模块中间的通信,我们通过参数进行传递
可以看一下activity下面的类:
三个包,oneActivity、secondActivity和threeActivity,可以看到应用只包含三个界面。
数据模块,数据模块主要包含网络请求、实体对象,里面包含了应用所有需要的数据来源。也是按照模块功能进行区分的!
剩下来就是一些其它附加功能的类了,没什么好说的,可以直接看代码!
项目的总体结构大致如上了,我们在心中有了一个大概的了解,然后接下来仔细分析里面的分层处理,解耦处理了!
详细的Dagger2+MVP融合,一行一行分析,一点一点进步,之二