MVP与MVC 简单比较

在开始这篇博客之前,我们先来探讨几个问题:
1. 为什么要用MVP?
传统开发中,View(包括Activity、Fragment及其子类)作为APP的功能的分割单元完成了过多任务,包括UI绘制与刷新、页面逻辑、动画渲染,这就导致一些复杂的页面动辄数千行,这就导致维护和升级的成本越来越高,代码牵一发而动全身。为了解决这个问题,我们提出了MVP的思想。
2. MVP如何解决这个View代码过于庞大的问题?
MVP全称是Model,View,Presenter,核心思想就是将整个应用分为三层。

    View层:视图层,包含界面相关功能,主要提供与用户的交互,包括实现设计师要求的界面以及动画的加载等交互效果。View层一般会持有Presenter的引用,通过这个引用将一些业务逻辑委托给Presenter完成,或者也可以通过依赖注入(如Dagger)的方式获得Presenter的实例进而实现逻辑操作的委托;
    Presenter层:逻辑控制层,这层是从View层中通过抽离控制逻辑部分形成的,充当View层和Model层交互的中间人,比如用户在屏幕上点击了下载按钮,下载一张图片并显示出来,这时,View层会发出网络请求,而Presenter层会接受View层的请求,并分发给对应的Model处理,最终结果通过Presenter层反馈给View层并显示出来;
    Model层:封装各种数据来源,例如远程网络数据,本地数据库数据,对Presenter层提供简单的接口。
    3. MVP与MVC的区别
    MVP作为经典MVC的延伸,与MVC最大的区别在于:MVP中的View层和Model层没有直接通信,是通过Presenter这个中间人进行的,其交互都是基于接口的,并且通常情况下,Presenter和View是一对一的,特殊情况下可能存在一个View对应多个Presenter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值