Android网络开发框架Retrofit(五:实战篇,实现MVP模式进行开发)
来源:互联网 发布:百度软件管家官方下载 编辑:程序博客网 时间:2024/05/21 15:41
Android网络开发框架Retrofit(五:实战篇,实现MVP模式进行开发)
从前面几节的代码看来,似乎很不优雅,特别是四:扩展篇,Retrofit+RxJava,加上RxJava后,代码看起来相当的难看,所以今天就说下如果使用MVP开发模式,将业务逻辑和界面分离,使我们的代码变得优雅好看起来
mvp,即是(model-处理业务逻辑(主要是数据读写,或者与后台通信(其实也是读写数据)),view-处理ui控件,presenter-主导器,操作model和view)
是从mvc模式演变过来的,在Android开发中,使用mvc模式,Activity变得不伦不类,不知道应该是v还是c了,为了解决这个问题,mvp出来了,将Activity划分成了view,在Activity中,我们只做更新界面的操作,其他的业务逻辑再也不放在Activity中了,这样可以更方便的管理我们的代码,利用这种开发模式还有一个很大的好处,就是团队开发项目起来快捷了很多,项目构建师将mvp中的p写好,将m和v分给团队成员,因为都是一个个接口,只要团队成员实现这些接口,这个项目就可以很快完成了,这样项目进度会大大的提高了很多,那么接下来,我们将mvp这种模式的实现展示一下
先建立好相对应的包名
比如我项目的包名是com.ysbing.retrofitdemo,在mvp中的目录下面会这样建立
注意我红框标注的地方,model和model下面的impl,presenter和presenter下面的impl,ui里面的activity,还有view
从目录结构可以看得出mvp的分工了,这样,分成几个模块后,写起来一开始会费点功夫,但这个模式搭建出来后,再去实现它,就会快很多了
1、Teach4Activity将presenter创建对象到Teach4Activity中,然后实现ITeach4View里面的接口方法
public class Teach4Activity extends Activity implements ITeach4View { private Teach4Presenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_teach4); presenter = new Teach4PresenterImpl(this); }}
2、写Teach4PresenterImpl里的方法,将Activity里传过来的ITeach4View进行操作,并初始化Teach4Model
public class Teach4PresenterImpl implements Teach4Presenter { private ITeach4View teach4View; private Teach4Model teach4Model; public Teach4PresenterImpl(ITeach4View teach4View) { this.teach4View = teach4View; teach4Model = new Teach4ModelImpl(); }}3、实现Teach4ModelImpl里的业务逻辑
public class Teach4ModelImpl implements Teach4Model { @Override public void queryIpInfo(final String ip, Subscriber<ApiBean<IpBean>> subscriber) { }}
4、将数据返回给Teach4PresenterImpl,然后更新ui
@Override public void queryIpInfo(String ip) { Subscriber<ApiBean<IpBean>> mySubscriber = new Subscriber<ApiBean<IpBean>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { teach4View.showError(e); } @Override public void onNext(ApiBean<IpBean> apiBean) { teach4View.showIpInfo(apiBean.data); } }; teach4Model.queryIpInfo(ip, mySubscriber); }5、实现Activity中所有的接口方法,完成mvp模式的开发
@Override public void showIpInfo(IpBean ipBean) { String ipInfo = String.format("这里是用MVP模式结合RxJava获取的数据,IP是:%s,我在%s%s%s", ipBean.ip, ipBean.country, ipBean.region, ipBean.city); mIpInfoText.setText(ipInfo); } @Override public void showError(Throwable e) { String err = "很遗憾失败了,错误是:" + e.toString(); mIpInfoText.setText(err); }
本轮教程到此结束,Retrofit是个很优秀的网络框架,希望会越来越多人喜欢上并用它,接下来有时间我会对Retrofit的源码进行讲解,谢谢大家
教程例子源码下载
1 0
- Android网络开发框架Retrofit(五:实战篇,实现MVP模式进行开发)
- Android网络开发框架Retrofit(一:介绍篇)
- Android网络开发框架Retrofit(四:扩展篇,Retrofit+RxJava)
- Android平台MVP开发模式实战入门
- android开发 MVP模式介绍与实战
- Android开发笔记之retrofit网络框架
- Android 开发之Retrofit网络框架
- Android开发网络篇Retrofit
- MVP+Dragger2+Rxjava2+Retrofit+OKhttp进行开发。
- MVP设计模式进行Android应用开发
- Android开发之浅谈框架模式MVP
- Android三大设计模式之一------------------MVP设计模式(包括rxjava+retrofit网络请求框架)
- Android网络开发框架Retrofit(二:入门篇,hello, world)
- Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
- Android从零开搞系列:网络框架系列(3)Retrofit+RxJava+MVP(上)Retrofit
- Android从零开搞系列:网络框架系列(6)Retrofit+RxJava+MVP(下)MVP
- Android MVP开发模式
- android MVP 开发模式
- The specified child already has a parent. You must call removeView() on the child's parent first.
- 起步,Python+Flask记录
- QWebView linkClicked()信号
- 2016【太原网络营销师】郭文军何为社会化媒体的http理论
- 自定义View中,获取string字符串的宽高
- Android网络开发框架Retrofit(五:实战篇,实现MVP模式进行开发)
- 程序猿学习新技术的10个建议
- 怎样在Android项目中在一个数据库里建立多张表
- TextView使用完全讲解
- WEB-INF下的jsp页面用户不能直接访问如何解决?
- 基于poi的Excel工具类修订版
- bootstrap datetimepicker bug 页面产生滚动会错位
- iOS开发中可以节省50%编译等待时间的解决方案
- libpcap+blibnet+libnids安装