你的位置:首页 > 软件开发 > 操作系统 > MVP模式在Android项目中的使用

MVP模式在Android项目中的使用

发布时间:2015-12-23 23:00:07
以前在写项目的时候,没有过多考虑架构模式的问题,因为之前一直做J2EE开发,而J2EE都是采用MVC模式进行开发的,所以在搭建公司项目的时候,也是使用类似MVC的架构(严格来讲,之前的项目还算不上MVC模式,只是简单将网络请求与界面分离,然后通过Handle通知更新界面)。这种写 ...

MVP模式在Android项目中的使用

  以前在写项目的时候,没有过多考虑架构模式的问题,因为之前一直做J2EE开发,而J2EE都是采用MVC模式进行开发的,所以在搭建公司项目的时候,也是使用类似MVC的架构(严格来讲,之前的项目还算不上MVC模式,只是简单将网络请求与界面分离,然后通过Handle通知更新界面)。这种写法,在后面随着项目越来越大,Activty或者Fragment中代码也会越来越多,导致项目的维护变的越来越复杂。所以需要另外一种架构模式来解决这个问题,在网上浏览了一圈,发现适合Android开发的架构模式非MVP莫属了。

  网上一搜,讲MVP模式的文章比比皆是。但是大多都是讲理论,稍微好点的会附带一个简单的登录的demo。一个简单的demo很难让初次接触MVP模式的人掌握它的使用。所以我决定写一个稍微复杂一点的新闻客户端SimpleNews(当然只是相对登录的demo)来展示MVP在具体项目中的使用。另外SimpleNews还使用了Material Design,也是学习Material Design的一个好Demo。

  好了,切入正文吧。先讲一下MVP的概念。

什么是MVP

  MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。

  模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;

  视图(View):负责界面数据的展示,与用户进行交互;

  主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。

  如下图所示,View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。

MVP模式在Android项目中的使用

  这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。当然,MVP还有其他的一些优点,这里不再赘述。下面看下MVP模式在具体项目中的使用。

MVP模式在项目中的使用

1、View层

  View层新闻展示模块的是组件是Fragment,里面有一个RecyclerView、SwipeRefreshLayout。布局代码如下:

<??><android.support.v4.widget.SwipeRefreshLayout  ="http://schemas.android.com/apk/res/android"  ="http://schemas.android.com/apk/res-auto"  android:id="@+id/swipe_refresh_widget"  android:layout_width="match_parent"  android:layout_height="match_parent">  <android.support.v7.widget.RecyclerView    android:id="@+id/recycle_view"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:scrollbars="vertical"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    android:paddingTop="@dimen/card_margin">  </android.support.v7.widget.RecyclerView></android.support.v4.widget.SwipeRefreshLayout>

原标题:MVP模式在Android项目中的使用

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录