博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVP模式简单使用小记
阅读量:6516 次
发布时间:2019-06-24

本文共 3302 字,大约阅读时间需要 11 分钟。

hot3.png

    这几天看了下MVP模式的使用, 终于搞出来了,所以做个小记,以便以后用

                                        

     MVP可以说是MVC的演化过来的,区别在于MVC的View和Modle间可以进行数据的交互,所以在MVC中一旦Modle发生了数据变化, 那么View层也要进行相应的修改,耦合性很强;但是MVP模式的Presenter作为Modle和View层的中间人,他持有双方的引用对象,而Modle和View间是没有任何联系的,完全实现了分离,这样耦合性降低,功能模块化,可维护性提高,但是不好的地就是类太他妈的多了......(个人总结,纯手打,将就看吧...)

public interface RequestModle {	/**	 * @param cookie 这里是需要传递的参数,用什么 就传什么	 * @param listener 这里是presenter给modle的监听回调	 */	public void loadData(Context context,String cookie,String orgid,OnDataListener listener);}
/** * modle 的实现类 * @author MagicStrom */public class RequestModleImpl implements RequestModle{	private Listener
listener1; private ErrorListener errorListener; @Override public void loadData(Context context,String cookie, String orgid,final OnDataListener listener) { listener1 = new Listener
(){ @Override public void onResponse(InfoBean response) { if (response != null) { listener.onSuccess(response); }else{ listener.onError(); } } }; errorListener = new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { listener.onError(); } }; String url = "www.baidu.com"; Map
map = new HashMap
(); map.put("orgid", orgid); CustomRequest
request = new CustomRequest
(url, InfoBean.class, map,listener1,errorListener); request.setSendCookie(cookie); RequestManager.getQueus(context).add(request); }}
public interface RequestPresenter {	/**	 * 获取数据的逻辑	 * @param context	 * @param cookie	 * @param orgid	 */	public void getData(Context context,String cookie,String orgid);	}
/** * presenter的实现类 * @author MagicStrom */public class RequestPresenterImpl implements RequestPresenter,OnDataListener{		//作为中间层 presenter持有view和modle的引用	private RequestView mRequestView;	private RequestModle mRequestModle;	public RequestPresenterImpl(RequestView mRequestView) {		this.mRequestView = mRequestView;		this.mRequestModle = new RequestModleImpl();	}	@Override	public void onSuccess(InfoBean response) {		mRequestView.showSuccess(response);	}	@Override	public void onError() {		mRequestView.showError();	}	@Override	public void getData(Context context, String cookie, String orgid) {		mRequestModle.loadData(context, cookie, orgid, this);	}}
public interface RequestView {	/**	 * 显示失败	 */	public void showError();	/**	 * 显示成功	 */	public void showSuccess(InfoBean bean);}

      以上就是modle ,   modle的实现,   presenter,   presenter的实现   和View层,当然用的时候 是Ativity和View层相关联,实现View层的接口

public interface OnDataListener {	/**	 * 成功监听回调	 */	public void onSuccess(InfoBean response);	/**	 * 失败监听回调	 */	public void onError();}
/** * 这个是使用网络请求的activity, 使用的时候可以new 出presenter的实现类,然后掉方法,并且实现view层,重写view层 的方法即可 * @author Administrator * */public class RequestActivity extends Activity implements RequestView{	private RequestPresenterImpl presenter;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		presenter = new RequestPresenterImpl(this);		presenter.getData(this, null, null);	}	@Override	public void showError() {		MyToastUtils.show(this, "fail------");	}	@Override	public void showSuccess(InfoBean bean) {		MyToastUtils.show(this, "success------");			}}

    上面就是我个人总结的一些, 肯定不全面,将就看吧, 不过网络请求,view层数据展示都是可以的

转载于:https://my.oschina.net/fbf8866/blog/750566

你可能感兴趣的文章
images对象实现图片幻灯片
查看>>
Oracle 12c 日常维护
查看>>
CF 445A DZY Loves Chessboard
查看>>
Cobbler简介
查看>>
恢复 git reset -hard 的误操作
查看>>
C# WinForm 文件上传下载
查看>>
【javascript】ajax请求 编码问题导致的ie浏览器在输入中文文字后没有内容,而chrome正常搜到文字...
查看>>
Git分支操作
查看>>
Spring Integration概述
查看>>
[SAP ABAP开发技术总结]权限对象检查
查看>>
RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
查看>>
Android安全问题 静音拍照与被拍
查看>>
cocos2d-x 3.1.1 学习笔记[13] listen 监听器
查看>>
定制私人博客
查看>>
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>