MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)
2016-09-12 16:03
531 查看
传了一张图,图比较大,请移步下载:http://download.csdn.net/detail/u011064099/9266245
在看代码之前,首先简单看一下什么是MVP模式:http://www.cnblogs.com/end/archive/2011/06/02/2068512.html
MVP最核心就是将界面与数据彻底分离,并且由其中的P来进行逻辑处理,与界面与数据之间的调用,在这个例子当中很好的对他们进行了分离:
IView只是用来控制界面的显示与事件的监听
Presenter则用作于数据与界面之间的调用与逻辑处理
AbstData为数据的统一接口
这三个类都继承IConnect,以方便它们之间进行通讯。
具体的实现都是由Presenter的子类来进行操作的,比如ShowNetPresenter它组装了具体的细节,供IView的实现类ActivityA来进行使用。
我们可以在Activity中写入一个静态方法,以便传入我们要具体使用的Presenter的实现类:
[java] view
plain copy
/**
* 我们的入口
*
* @param context
* @param c Presenter具体的实现类
*/
public static void startInstance(Context context, Class c) {
Intent intent = new Intent(context, MVPActivity.class);
intent.putExtra(KEY, c);
context.startActivity(intent);
}
就像这样:
[java] view
plain copy
MVPActivity.startInstance(context, PresenterImpl.class);
在它的内部,对传入的类进行实例化:
[java] view
plain copy
Class<?> c = (Class<?>) getIntent().getSerializableExtra(KEY);
Constructor<?> constructor = c.getConstructor(IView.class);
Object o = constructor.newInstance(this);
if (o instanceof Presenter)
mPresenter = (Presenter) o;
于是,IView的实现类便于Presenter的实现类产生了交互,它们之间便可进行通讯。
更多详情请参见项目源码:
项目地址: http://git.oschina.net/sahadev/MVP-for-android-
在该项目中,因为有些仓促,所以某些设计可能没有完全遵从设计原则,请在使用的时候适当修改。
在看代码之前,首先简单看一下什么是MVP模式:http://www.cnblogs.com/end/archive/2011/06/02/2068512.html
MVP最核心就是将界面与数据彻底分离,并且由其中的P来进行逻辑处理,与界面与数据之间的调用,在这个例子当中很好的对他们进行了分离:
IView只是用来控制界面的显示与事件的监听
Presenter则用作于数据与界面之间的调用与逻辑处理
AbstData为数据的统一接口
这三个类都继承IConnect,以方便它们之间进行通讯。
具体的实现都是由Presenter的子类来进行操作的,比如ShowNetPresenter它组装了具体的细节,供IView的实现类ActivityA来进行使用。
我们可以在Activity中写入一个静态方法,以便传入我们要具体使用的Presenter的实现类:
[java] view
plain copy
/**
* 我们的入口
*
* @param context
* @param c Presenter具体的实现类
*/
public static void startInstance(Context context, Class c) {
Intent intent = new Intent(context, MVPActivity.class);
intent.putExtra(KEY, c);
context.startActivity(intent);
}
就像这样:
[java] view
plain copy
MVPActivity.startInstance(context, PresenterImpl.class);
在它的内部,对传入的类进行实例化:
[java] view
plain copy
Class<?> c = (Class<?>) getIntent().getSerializableExtra(KEY);
Constructor<?> constructor = c.getConstructor(IView.class);
Object o = constructor.newInstance(this);
if (o instanceof Presenter)
mPresenter = (Presenter) o;
于是,IView的实现类便于Presenter的实现类产生了交互,它们之间便可进行通讯。
更多详情请参见项目源码:
项目地址: http://git.oschina.net/sahadev/MVP-for-android-
在该项目中,因为有些仓促,所以某些设计可能没有完全遵从设计原则,请在使用的时候适当修改。
相关文章推荐
- MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)
- Android——MVP+xRecyclerView+Retrofit+OkHttp+RxJava结合应用
- 【Android】显示高清大图,可缩放类库 - SubsamplingScaleImageView(可用于做图片浏览器)使用说明
- Android应用开发中RecyclerView组件使用入门教程
- 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。
- Android:这是一份非常详细的MVP+Rxjava2.0+Retrofit2.0相结合举例RecyclerView的实战篇章
- Android——MVP架构OkHttp的二次封装以及RecyclerView的使用
- 关于MVP设计模式 和 BaseRecyclerViewAdapterHelperV2.4.4 Android
- Android开发之应用管理(RecyclerView的不同position使用不同的View)
- android 用mvp模式来架构自己的app+打造Recyclerview万能适配器
- Android基础教程(九)之自定义下拉菜单模式----Spinner与setDropDownViewResource的应用
- Android应用开发之(WebView中loadData与loadDataWithBaseURL的使用上的区别)[转]
- Fragment中使用ViewFlipper在严格模式下抛出android.app.IntentReceiverLeaked
- android常用设计模式及应用举例
- 【Android 应用开发】Android中使用ViewPager制作广告栏效果 - 解决ViewPager占满全屏页面适配问题
- android基础笔记——使用viewholder模式优化ListView
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- MVP模式在Android开发中的应用
- android应用开发揭秘例4-3笔记(TextView的使用)
- Android中使用selector动态改变imageView或ImageButton的背景和在GridView中应用