MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)

来源:互联网 发布:汕头java招聘 编辑:程序博客网 时间:2024/04/30 13:23

传了一张图,图比较大,请移步下载: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
  1. /** 
  2.  * 我们的入口 
  3.  * 
  4.  * @param context 
  5.  * @param c       Presenter具体的实现类 
  6.  */  
  7. public static void startInstance(Context context, Class c) {  
  8.     Intent intent = new Intent(context, MVPActivity.class);  
  9.     intent.putExtra(KEY, c);  
  10.     context.startActivity(intent);  
  11. }  
就像这样:

[java] view plain copy
  1. MVPActivity.startInstance(context, PresenterImpl.class);  
在它的内部,对传入的类进行实例化:

[java] view plain copy
  1. Class<?> c = (Class<?>) getIntent().getSerializableExtra(KEY);  
  2. Constructor<?> constructor = c.getConstructor(IView.class);  
  3. Object o = constructor.newInstance(this);  
  4. if (o instanceof Presenter)  
  5.     mPresenter = (Presenter) o;  

于是,IView的实现类便于Presenter的实现类产生了交互,它们之间便可进行通讯。


更多详情请参见项目源码:

项目地址: http://git.oschina.net/sahadev/MVP-for-android-



在该项目中,因为有些仓促,所以某些设计可能没有完全遵从设计原则,请在使用的时候适当修改。

0 0
原创粉丝点击