浅谈MVC、MVP、 MVVM

来源:互联网 发布:淘宝淘抢购有小二吗 编辑:程序博客网 时间:2024/05/19 00:13


1. MVC、MVP、 MVVM



View  主要负责与用户交互,交互可以分成两部份,一部份功能为展示给用户称为输出(如数据表格显示,动画效果,视频播放等等),一部份功能用于用户反馈给系统称为输入(如按键点击,缩放手势,滑动手势等)。

Model 主要负责数据获取和传输,如数据请求,数据上传,数据库读写等。

Controller(Presenter) 主要用负责业务处理。


MVC 与 MVP 简单比较

  1. 各个模块间的通信方式不一样
    MVC: View 一般情况在发生交互或用户有输入的时候会(如按键点击,Activity创建等),用command模式 发送command到Controller, Controller在收到Command并处理完成逻辑后会通知到Model,Model在收到数据并处理完成后一般会用观察者的方式更新到View。
    MVP:在Model处理完数据后更新的对像是Presenter
  2. Controller与Presenter 所承担的职责有所变化
    Controller:主要负责View事件的处理
    Presenter:   view事件处理,并承担有数据适配的职责
  3. Model与View之间的藕合度有所区别 MVC:  V与M之间有藕合关系MVP ;V与M之间没有藕合关系

  MVP 与 MVVM简单比较
MVVM也是从MVP演化的,是WPF版的MVP,相对于MVP, VM与V之间是双向bind的,即 VM与View的属性保持一至,MVVM加强了VM与view的关联性。


2.适用场景

MVC用于View与Model的连接比较紧密,一部分数据bind的内容放到View里面完成这样加重了View的职责,不太适合重View业务场景。MVVM中VM与V的双向bind更适合于View数据显示与数据操作更紧密的场景,也就是适合UI与数据变化频繁的场景。而MVP,P与View没有双向绑定,P的操作性更加灵活,更适合处理业务逻辑偏重的业务逻辑。



我司是偏重于业务逻辑的业务场景,选择了MVP,并在基础的mvp上做了一些改进,感兴趣的同学可以参照我在GitHub上传的demo中,看一下。

demo地址:点击打开链接

0 0
原创粉丝点击