MVP 你应该了解的设计模式(二)实例分析

MVP for Android

MVP代表Model,View和Presenter。

  • View层负责处理用户事件和视图部分的展示。在Android中,它可能是Activity或者Fragment类。

  • Model层负责访问数据。数据可以是远端的Server API或本地数据库或者SharedPreference等。

  • Presenter层是连接(或适配)View和Model的桥梁。是个中间人的角色。

Android为什么要选择MVP

1、移动app开发使用最多就是View-Model模式

2、程序员的工作大部分是在和复杂的View打交道而忽略了业务逻辑的处理。

3、你会发现你的View和Model始终都是交织在一起,程序耦合性太高。数据、显示及业务逻辑没有很好的分离,代码维护很困难,不易扩展。

使用MVP你会发现你的Activity或Fragment比较简洁,只负责View的显示,不会有复杂的业务逻辑及数据处理。而你的业务和数据有专门的模块来处理,当你的View需要改变时只需要给你的View层提供回调即可。

在View层,你需要建立一个ViewModel,例如一个登录的ViewModel应该包含,用户名,密码。所以Model不能直接被View使用,需要转换为ViewModel,绑定到View。

Presenter层,Presenter实现了Interactor的回调接口,接收到ViewModel的实例,它只需要在它的回调接口中将ViewModel绑定到View即可,在这个过程Presenter并没有真正实现业务逻辑的处理,只是负责把ViewModel绑定到View上。例如在用户登录示例中,Interactor定义了login接口,在Presenter回调接口中调用,并实现login状态的回调。

下面看个具体的MVP简单例子:

一、ViewModel


登录的ViewModel定义了显示隐藏登录进度的接口,设置登录失败信息状态,登录成功后的页面跳转,及登录的用户名和密码。

二、Presenter


三、Interactore


四、Acvtivity


总结

MVP框架模式完全将Model模型和View视图分离,从而使得代码的耦合性滴,利用MVP框架写项目达到解耦作用。MVP和MVC最大的区别是:MVC中的V可以从M中获取数据,而MVP中M和V完全分离,互相不知道对方的存在,Presenter通过接口通信方式将V和M通信。 在Android中MVP框架 Activity担当View视图层和MVC框架模式不一样Activity担当控制器。


详细源码链接:

http://download.csdn.net/detail/xinlangren88/9599392


原创不易,如果您觉得好,可以分享此公众号给你更多的人。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值