加载中 ...
首页 > 新闻资讯 > 经验心得 正文

MVC vs. MVP vs. MVVM

2019-03-23 07:30:45 来源:沈阳软件公司 作者:沈阳软件开发

1 简介  英文原文:MVC vs. MVP vs. MVVM 

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

  2 MVC/MVP

  2.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.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的庞大逻辑。

  3 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。

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。