我们知道。Android App 本质上抽象成两个层次:视图和数据。为了App在发展过程中高速的适应变化,方便维护和高速迭代,我们要将数据和视图解耦,而在解藕方面我们的前辈们在漫长的软件开发经验中为我们提供了两套流行的指导框架:MVC和MVP,当中MVP近年来在Android应用开发上逐渐流行。近期在开发群里有小伙伴也问道了这个问题,本章我将结合详细样例依据自己的理解用MVP进行实现。
先看下最后的效果:
最后的效果非常easy吧,那么我们就来梳理一下整个思路:
MVP流程。大概能够分成四步:
1.UI引用Presenter来实现View的方法;
2.Presenter调用Model,走Model里边的逻辑;
3.Model详细逻辑实现,而且回调Presenter;
4.Presenter回调View,即回到UI,回调View方法
gradle文件
compile 'com.loopj.android:android-async-http:1.4.9' compile 'com.google.code.gson:gson:2.3.1'
说明:1.网络请求使用了async-http;
2.json解析使用的gson。
3.本实例数据来源于聚合数据:https://www.juhe.cn/ 有须要的可自取。
1.项目结构:
2.MVP之M
CityResultModelBean.java 本实例的bean比較复杂,字段较多。主要是依据聚合接口返回的response而定的,能够忽略,纯bean。无他。
CityWeatherModel.java 详细业务的处理,此处就是数据的获取,检索和解析等操作。
3.MVP之V
WeatherView.java 处理业务须要哪些方法;
MainActivity.java 仅仅关心本层的数据和ui展示;
3.MVP之P:
WeatherPresenter.java 是model和view的连接桥梁。从model检索到数据之后返回给view进行展示。
小结:
MVC模式
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
View 传送指令到 Controller
Controller 完毕业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
在传统的mvc模式中,可能activity和fragment很多其它扮演了view和controller的双重身份,数据和视图的耦合程度较高。
MVP模式
在MVP中,Activity和Fragment扮演View层,Presenter相当于MVC模式中Controller层,处理业务逻辑。
一般一个Activity都有一个对应的presenter通过model来处理数据。
最后,推荐一个公众号 anything_android
包含但不局限于android前沿火热技术快送,干货分享,职场焦点,IT、数码3C业界头条咨询,当然偶尔也会有段子和鸡汤。