MVC、MVP、MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用。

一、MVC(Model-View-Controller)

MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。

MVC使用非常广泛,比如JavaEE中的SSH框架(Struts/Spring/Hibernate),Struts(View, STL)-Spring(Controller, Ioc、Spring MVC)-Hibernate(Model, ORM)以及ASP.NET中的ASP.NET MVC框架,xxx.cshtml-xxxcontroller-xxxmodel。(实际上后端开发过程中是v-c-m-c-v,v和m并没有关系,下图仅代表经典的mvc模型)

二、MVP(Model-View-Presenter)

MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。

.NET程序员熟知的ASP.NET webform、winform基于事件驱动的开发技术就是使用的MVP模式。控件组成的页面充当View,实体数据库操作充当Model,而View和Model之间的控件数据绑定操作则属于Presenter。控件事件的处理可以通过自定义的IView接口实现,而View和IView都将对Presenter负责。

三、MVVM(Model-View-ViewModel)

如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。

这方面典型的应用有.NET的WPF,js框架Knockout、AngularJS等。

转载于:https://www.cnblogs.com/914556495wxkj/p/6485858.html

MVC、MVP、MVVM相关推荐

  1. MVC、MVP和MVVM的优缺点

    目前流行的架构模式是MVC.MVP和MVVM 1.MVC Model(模型).View(视图).Controller(控制器) 优点: 1)耦合性低,视图层和业务层分离 2)可维护性高,简单,方便修改 ...

  2. iOS进阶之架构设计MVC、MVP、MVVM(12)

    转载自:iOS架构模式MVC.MVP.MVVM(内附demo) 文章对比了MVC.MVP.MVVM,结构清晰,示例简单,容易让人接受.所以转载至此.以供自己赏读. MVC MVC的实现思路是:用户操作 ...

  3. android mvc mvp 区别,谈谈Android框架 MVC、MVP、MVVM的区别

    今天写写Android的MVC.MVP.MVVP三个框架的对比,并加深自己对这三个框架的理解. 548b9bea8dc18.gif 一 . MVC:Model-View-Controller MVC全 ...

  4. MVC、MVP、MVVM,我到底该怎么选?

    前言 MVC.MVP.MVVM是我们工作和面试中都比较重要的一块,但很多时候我们却有点迷惑.比如看了好多篇文章都搞不懂MVC到底是个啥本来想写个MVP写着写着就变成MVC了,到底Databing和MV ...

  5. 对MVC、MVP、MVVM的理解

    最近看了一堆js框架的文档,有点乱,想分门别类整理一下,但是首先需要搞清楚这些框架里面经常谈论的MV*之类的概念.MVC的概念很早就知道,现在发现还有MVP.MVVM,那么这些设计模式有什么区别呢?谈 ...

  6. Android App的架构设计:从VM、MVC、MVP到MVVM

    随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...

  7. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

    刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式--从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...

  8. [vue] 说说你对MVC、MVP、MVVM模式的理解

    [vue] 说说你对MVC.MVP.MVVM模式的理解 MVVM用视图模型代替了MVP中的展示器,视图模型和视图实现了双向绑定,当视图发生变化的时候视图模型也会发生改变,当视图模型变化的时候视图也随之 ...

  9. 结合vue、react、angular谈谈MVC、MVP、MVVM框架

    首先,在谈这个话题之前, 我们有必要了解一下库和框架的区别. 我们先来看react官网以及vue官网对他们的定位: react: vue: react我们不说了,官网上明明白白说了,人家是一个libr ...

最新文章

  1. JS-DOM-元素节点
  2. 消息队列,我只选RabbitMQ!
  3. 60秒语音有救了?曝微信测试语音进度条,内部人士一句话打回原形
  4. 数字电路与微型计算机原理,电子科技大学1999年考研真题-微机原理与数字电路...
  5. 微软Windows2003的正版安装序列号
  6. idea 设置默认 jdk
  7. IntelliJ手动安装python与scala插件
  8. Java课程设计/大作业合集
  9. Hadoop核心组件及组件介绍
  10. 关于a标签的hover问题
  11. permutohedral lattice理解
  12. 【每天play】为了学好python需要从脚下做起,Linux基础-用户权限与组管理 P60-70
  13. 你不得不知的网络编程三剑客
  14. LaTex论文排版 | (30) 三线表
  15. 在Java中,每个try块后面都必须紧跟catch块吗?
  16. Android源码国内源下载
  17. 王者荣耀:又一新皮肤登场,堪称惊艳 ,网友:三国‘天下无双’
  18. 读书笔记《SpringBoot编程思想》
  19. oracle中累计求和_oracle求和代码示例
  20. 电脑如何登录多个微信吗?

热门文章

  1. python绘制盖尔圆并做特征值的隔离
  2. php 解决方案,php优化解决方案
  3. 计算机科学NIP,NIP自然语言处理主要应用在哪些领域呢?
  4. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型
  5. mysql 执行cmd,mysql命令行中执行sql的几种方式总结
  6. mysql新建表96k_innodb表 手工导入导出
  7. c语言程序设计课件数组,第五章 数组_《C语言程序设计(Visual C++ 6.0环境)》电子教案_ppt_大学课件预览_高等教育资讯网...
  8. html5的video怎么把里面的控制器移出来_日产Pro-Pilot的ADAS控制器拆解
  9. 【机器学习入门】(12) 特征工程:特征选择、数据降维、PCA
  10. mysql innodb 设置,Mysql5.5 InnoDB存储引擎简单设置