MVC vs. MVP vs. MVVM
三者的目的都是分散关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易举行单元测试。
2 MVC/MVP2.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 MVP1、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-VMMVVM是在原有领域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,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。