美文网首页
2.《关于MVC,MVP 和 MVVM》

2.《关于MVC,MVP 和 MVVM》

作者: 笨蛋小明 | 来源:发表于2018-03-30 11:49 被阅读0次

一、MVC

如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。

MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作。

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。

这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。

  • 最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户>的操作界面,是程序的外壳。

  • 最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据
    或信息。

  • 中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入
    的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

1.View 传送指令到 Controller
2.Controller 完成业务逻辑后,要求 Model 改变状态
3.Model 将新的数据发送到 View,用户得到反馈

MVC.png

所有通信都是单向的。

二、MVP

简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

MVP 模式将 Controller 改名为 Presenter[prɪ'zentə],同时改变了通信方向。

MVP.png

1.各部分之间的通信,都是双向的。
2.View 与 Model 不发生联系,都通过 Presenter 传递。
3.View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

三、MVVM

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

MVVM.png
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular、 Ember和Vue等都采用这种模式。

相关文章

网友评论

      本文标题:2.《关于MVC,MVP 和 MVVM》

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