iOS技术文章

MVC & MVP & MVVM☀️

2016-06-28  本文已影响32人  LeaderBiao
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。
三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单元测试。

1.MVC/MVP

1.1MVC
    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还是有点困难的。


#####1.2MVP

1、View接受用户的交互请求
  2、View将请求转交给Presenter
  3、Presenter操作Model进行数据库更新
  4、数据更新之后,Model通知Presenter数据发生变化
  5、Presenter更新View的数据```

2.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。

英文原文:MVC vs. MVP vs. MVVM
上一篇 下一篇

猜你喜欢

热点阅读