MVVM、MVC及MVP

1.MVVM

        MVC是Mode-View-ViewModel,模型指的是后端传递的数据,视图是所看到的页页面、视图模型是MVVM模式核心,它是连接View和Model的核心,它是连接View和Model的桥梁,它有两个方向:一是将模型转化成视图,即将后端传递的数据转化成所看到了页面,实现的方式是:数据绑定;二是将视图转化为模型,即将所看到的页面转化成后端的数据。在MVVM的框架下视图和模型是不能直接通信的,它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,VIewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定,并且MVVM中的View和ViewModel可以相互通信,如下:

在这里插入图片描述

2. MVC

        MVC是Model-View-Conroller,即模型-视图-控制器,M和V指的意思和MVVM中的M和V的意思一样,C即Controller指的是页面业务逻辑,使用MVC的目的就是将M和V的代码分离,MVC是单向通信,也就是View跟Model,必须通过Controller承上启下。MVC和MVVM的区别并不是VM完全取代C,ViewModel存在的目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该在Controller中实现,也就是说MVVM实现的是业务逻辑组件的重用。

3.MVP

        MVP的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过Controller。
MVP模式下表示层的优势体现在下面三个方面:

  1. View与Model完全隔离。
    得益于此,Model和View之间具有良好的松耦合设计,这意味着,如果Model或View中的一方发生变化,只要交互接口不变,另一方就没必要对上述变化做出改变。这使得Model层的业务逻辑具有很好的灵活性和可重用性。
  2. Presenter与View的具体实现技术无关。
    也就是说,采用诸如Windows表单,WPF,Web表单等用户界面构建技术中的任意一种来实现View层,都无需改变系统的其他部分。甚至为了使B/S,C/S部署架构能够被同时支持,应用程序可以用同一个Model层适配多种技术构建的View层。
  3. 可以进行View的模拟测试。
    过去,由于View和Model之间的紧耦合,在Model和View同时开发完成之前对其中一方进行测试是不可能的。出于同样的原因,对View或Model进行单元测试很困难。现在,MVP模式解决了所有的问题。在MVP模式中,View和Model之间没有直接依赖,开发者能够借助模拟对象注入测试两者中的任一方。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章