美文网首页Asp.net开发编程中国C#
MVC、 MVP、 MVVM之间的区别

MVC、 MVP、 MVVM之间的区别

作者: 小明yz | 来源:发表于2017-08-08 08:46 被阅读115次

一、 简介

三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单元测试。

二、MVC/MVP

1 、MVC

1、View接受用户的交互请求

2、View将请求转交给Controller

3、Controller操作Model进行数据更新

4、数据更新之后,Model通知View数据变化

5、View显示更新之后的数据

View和Controller使用Strategy模式实现,View使用Composite模式,View和Model通过Observer模式同步信息。Controller不知道任何View的细节,一个Controller能被多个View使用。MVC的一个缺点是很难对Controller进行单元测试,Controller操作数据,但是如何从View上断言这些数据的变化呢?例如,点击一个View的按钮,提交一个事件给Controller,Controller修改Model的值。这个值反映到View上是字体和颜色的变化。测试这个Case还是有点困难的。

2、MVP

1、View接受用户的交互请求

2、View将请求转交给Presenter

3、Presenter操作Model进行数据库更新

4、数据更新之后,Model通知Presenter数据发生变化

5、Presenter更新View的数据

Presenter将Model的变化返回给View。和MVC不同的是,Presenter会反作用于View,不像Controller只会被动的接受View的指挥。正常情况下,发现可以抽象View,暴露属性和事件,然后Presenter引用View的抽象。这样可以很容易的构造View的Mock对象,提高可单元测试性。在这里,Presenter的责任变大了,不仅要操作数据,而且要更新View。

在现实中,MVP的实现会根据View的充、贫血而有一些不同,一部分倾向于在View中放置简单的逻辑,在Presenter放置复杂的逻辑;另一部分倾向于在presenter中放置全部的逻辑。这两种分别被称为:Passive View和Superivising Controller。

在Passive View中,为了减少UI组件的行为,使用Controller不仅控制用户事件的响应,而且将结果更新到View上。可以集中测试Controller,减小View出问题的风险。

在Superivising Controller中的Controller既处理用户输入的响应,又操作View处理View的复杂逻辑。

三、 M-V-VM

MVVM是在原有领域Model的基础上添加一个ViewModel,这个ViewModel除了正常的属性意外,还包括一些供View显示用的属性。例如在经典的MVP中,View有一个属性IsCheck,需要在Presenter中设置View的IsCheck值。但是在MVVM中的Presenter也会有一个IsCheck属性来同步View的IsCheck属性,可能会用到Observer模式同步IsCheck的值。在MVVM中,Presenter被改名为ViewModel,就演变成了你看到的MVVM。在支持双向绑定的平台,MVVM更受欢迎。例如:微软的WPF和Silverlight。

欢迎关注我的公众号(同步更新文章)DoNet技术分享平台

阅读原文

相关文章

  • MVC、MVP、MVVM

    MVC、MVP、MVVM 1、MVC和MVP的区别 区别在于MVC的MV之间可以通信,M的改变直接影响V的展示,不...

  • iOS面试题

    1.MVC、MVP、MVVM的区别?MVC: MVVM: MVP: 2.自动布局有哪些?(1)Autolayout...

  • iOS:常见架构

    常见的架构有 MVC、MVP 和 MVVM。下面分别用代码做下演示。 MVC MVP MVP与MVC的区别在于:M...

  • MVC、 MVP、 MVVM之间的区别

    一、 简介 三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单...

  • MVC、MVP、MVVM

    MVC和MVP,MVVM之间的关系 MVC和MVP的关系 我们都知道MVP是从经典的模式MVC演变而来,它们的基本...

  • [iOS] MVVM

    几种常见的架构,MVC、MVP、MVVM,下面说说区别以及MVVM代码 MVC 相信大家都熟悉这个框架,这个也是初...

  • iOS-面试题6-架构

    目录: MVC-Apple MVC-变种 MVP MVVM 分层设计 架构与设计模式的区别 一. MVC-Appl...

  • mvc、mvp与mvvm

    1 mvc缺点 2 mvp a 简介 b 与mvc的区别 c 优缺点 d 使用建议 3 MVVM ...

  • iOS面试题集合

    1.介绍iOS设计模式MVC,MVVM, MVP以及它们之间的区别? 2.简述内存管理 3.#import和#in...

  • 2017-09-10-MVC,MVP和MVVM的区别和联系

    MVC,MVP和MVVM的区别和联系 1, MVC(Model-View-Controller)是最常见的软件架...

网友评论

    本文标题:MVC、 MVP、 MVVM之间的区别

    本文链接:https://www.haomeiwen.com/subject/klnzlxtx.html