android MVC与MVP

MVP

MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。

MVC

在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

  • 1、MVP架构方式:
    在MVP模式里通常包含4个要素:
    (1) View :负责绘制UI元素、与用户进行交互(在Android中体现为Activity);
    (2) View interface :需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
    (3) Model :负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);
    (4) Presenter :作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
  • 2、理解:
    View:对应Activity主要处理界面控件的获取和创建消息控件等纯UI上的操作,View一般有一个ViewInterface,用于获取界面上的控件信息、状态操控View上的控件;
    Model:用于和具体数据和业务逻辑打交道,不关心数据从哪里来到哪里去,只关心传入的参数数据要做哪些计算或验证操作,通常参数列表中有用于将结果回传的回调接口(该回调接口也可以写在presenter中),一般包含数据封装的bean对象和数据操作的BeanBiz接口;
    Presenter:用于将View和Model结合起来的中间人,将ViewInterface获取的数据交给BeanBiz去处理,然后通过BeanBiz的结果回传接口获取数据处理结果,然后通知对应的View,View根据不同结果去展示不同的控件元素;
    (在Presenter中调用BeanBiz中的方法处理通过ViewInterface获取的View元素数据,再根据BeanBiz处理结果调用ViewInterface不同View显示方法。在presenter中调用viewInterface和BeanBiz接口的方法,实现view与model的数据交互。)
    View是收购原材料并出售原材料加工后产品的店铺,Model是原材料加工的工厂,presenter比较辛苦,要为View找加工工厂,还要在加工后将获得的产品准确送到对应的店铺。
    最后就是在View对应的activity中尽情的使唤presenter吧。。。但是在View层中是不能出现Model层的接口或实体对象的,与model打交道就交给万能的presenter吧。

  • 3、区别
    最明显的区别就是,MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的。

    MVP模式:
    View不直接与Model交互 ,而是通过与Presenter交互来与Model间接交互
    Presenter与View的交互是通过接口来进行的,更有利于添加单元测试
    通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑

    MVC模式:
    View可以与Model直接交互
    Controller是基于行为的,并且可以被多个View共享
    可以负责决定显示哪个View

  • 4、两篇参考文章链接

文章一 快戳我
文章二 快戳我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值