文档章节

MVP模式简单使用小记

Magic_锋
 Magic_锋
发布于 2016/09/23 10:38
字数 631
阅读 46
收藏 2

    这几天看了下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<InfoBean> listener1;
	private ErrorListener errorListener;
	@Override
	public void loadData(Context context,String cookie, String orgid,final OnDataListener listener) {
		
		listener1 = new Listener<InfoBean>(){
			@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<String,String> map = new HashMap<String, String>();
		map.put("orgid", orgid);
		CustomRequest<InfoBean> request = new CustomRequest<InfoBean>(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层数据展示都是可以的

© 著作权归作者所有

上一篇: ShareSDK分享小结
下一篇: ImageLoader
Magic_锋
粉丝 0
博文 58
码字总数 35503
作品 0
东城
程序员
私信 提问
Android MVP 使用

1.浅谈 MVP in Android(http://blog.csdn.net/lmj623565791/article/details/46596109) 2.MVP模式在Android项目中的使用(http://www.cnblogs.com/liuling/archive/2015/12/23/mvp-pattern-an......

IT追寻者
2016/07/18
35
0
Android开源架构

Android 常用三方框架的学习 Android 常用三方框架的学习 likfe/eventbus3-intellij-plugin AS 最新可用 eventbus3 插件,欢迎品尝 简单的 MVP 模型 简单的 MVP 模型 淘宝应对双 11 的技术架...

掘金官方
2017/12/25
0
0
MVP模式在Android项目中的使用

以前在写项目的时候,没有过多考虑架构模式的问题,因为之前一直做J2EE开发,而J2EE都是采用MVC模式进行开发的,所以在搭建公司项目的时候,也是使用类似MVC的架构(严格来讲,之前的项目还算...

丁佳辉
2016/05/26
34
0
MVP架构在xamarin android中的简单使用

好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑...

操张林
2018/05/17
0
0
MVP?MVC?移动开发如何选择正确的框架?

  【IT168 评论】设计模式和架构对创建一个成功可靠的应用程序至关重要,可是具备哪些特征才算得上一个好的架构呢?MVP、MVC和MVVM似乎都不错,该如何选择呢?   为什么以及如何选择正确的...

it168网站
2017/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

秒杀系统思路

业务分析 技术挑战 请求响应要快:无论成功失败,需要尽快返回给用户 架构设计   前端:静态化   站点层:限制请求数   服务层:乐观锁写缓存   数据库CAP:读写高可用,一致性,扩容...

雷开你的门
19分钟前
7
0
最全的教育行业大数据解决方案,个个针对痛点

大数据的悄然兴起也带动了教育行业的革新,移动教育、云课堂等的出现,使得教育行业再次成为了可以中长期保持高景气的行业。然而,初涉数据领域的教育行业同时也面临着相当大的难题,还需要更...

朕想上头条
23分钟前
5
0
预约模块设计分析

1.预约功能描述: 预约是小程序中常见的一种商品管理系统,商家可根据商品或服务的特性,灵活设置预约细节,为用户提供线上预约服务,如场地预约,商品预定等,实现高效经营。 预约场景: ...

鱼煎
26分钟前
4
0
阿里云日志服务构建网站实时分析大盘实战

场景分析 挖掘数据价值是当前企业级网站共同面临的问题。买买网是一个电商平台网站,每天拥有大量的用户访问和购买记录。为了引导用户直接消费,提升购买率和转化率,不同的用户类别需要推荐...

阿里云官方博客
27分钟前
2
0
TL665xF-EasyEVM开发板硬件处理器、NAND FLASH、RAM

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
31分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部