用户界面编程模式 MVC MVP MVVM

程序 = 数据 + 算法
数据:就是待处理的东西
算法:就是代码

涉及到人机交互的程序,不可避免涉及到界面和界面上显示的数据
原始方式是界面代码和逻辑代码糅合在一起,没有分而治之,导致处理难度很大,我们需要要把界面代码和逻辑代码分开。
首先出现了MVC模式,后续又出现MVP模式及MVVM模式
这三种模式,都是由view来驱动的,就是一个业务由用户来触发,再到control(或者P或者VM), 再到model,本质是分离view和model

view <----> control <----> model

1.MVC(model-view-control)

1.用户通过view触发请求
   2.control收到请求,找到合适的model,调用model
   3.model处理请求,返回数据
   4.control调用view,并把model传递给view
   5.view获取model中的数据,更新view

这种模式view和model没有彻底分开,view单向依赖model

2.MVP(model-view-presenter)
   1.用户通过view触发请求
   2.P收到请求,找到合适的model,调用model
   3.model处理请求,返回数据
   4.P根据model,更新view

这种模式view model彻底分开了,不过P中要写大量的代码来更新view

3.MVVM(model-view-viewModel)
   1.用户通过view触发请求
   2.VM收到请求,找到合适的model,调用model
   3.model处理请求,返回数据
   4.VM透传model数据到view
   5.view自动更新界面

这种模式view model彻底分开了,通过透传(数据绑定机制),VM中不用写那些大量的更新view代码

三种模式的区别:
   1.MVC中 view model未彻底分离,其他两种都彻底分离
   2.MVP中 P中需要写大量的数据绑定代码来更新view,其他两种无这种缺点
   3.MVVM中 view model中的数据是双向绑定的,修改数据都会影响对方的相应数据

MVVM模型既分离了view model,对控制器的压力也不太大,是一中比较好的分离方案

这三种模式的应用
    1.web方面
       a.服务器端
         struts2,springMVC
         都是MVC方案,JSP、各种模板等等都是view
       b.前端
         前端MVC, 前端MVVM
         这些控制都在前端(浏览器端,JS代码实现),后端之负责为前端提供业务数据(业务逻辑也在后端做,返回最终结果给前端即可)

2.移动设备
      ANDROID 支持这三种模式的开发
      IOS 也支持这三种模式的开发

3.桌面
      windows
       VC VS 都支持MVC

用户界面编程模式 MVC MVP MVVM的更多相关文章

  1. 浅析前端开发中的 MVC/MVP/MVVM 模式

    MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...

  2. Android App的设计架构:MVC,MVP,MVVM与架构经验谈

    相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...

  3. MVC, MVP, MVVM比较以及区别(上)

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  4. android MVC && MVP && MVVM分析和对比

    相关:http://www.cnblogs.com/wytiger/p/5305087.html 出处http://blog.csdn.net/self_study,对技术感兴趣的同鞋加群544645 ...

  5. MVC, MVP, MVVM比较以及区别

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  6. 前端mvc mvp mvvm 架构介绍(vue重构项目一)

    首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...

  7. Android App的设计架构:MVC,MVP,MVVM与架构AAAAA

    1. 架构设计的目的1.1 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.1.2 这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续 ...

  8. [转]MVVM架构~mvc,mvp,mvvm大话开篇

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

  9. [1] MVC & MVP &MVVM

    开发架构之MVC & MVP & MVVM  

随机推荐

  1. Python风格规范分享

    今天给大家分享Python 风格规范,以下代码中 Yes 表示推荐,No 表示不推荐. 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 以下情况除外: 长的 ...

  2. 如何把控好Essay写作结构

    留学生在国内写过作文,但是对于essay写作到底了解多少呢?大家觉得essay写作太难是语言问题,但是大家要明白,老师对于内容的考察远重于对语言的考察.同学们的essay写作如果能做到言之有理,自圆其 ...

  3. Codeforces 1290B/1291D - Irreducible Anagrams

    题目大意: 两串字符串 s 和 t 是否 anagrams(下文简称ANA) 的定义是: 是否能将 s 内的字母打乱顺序后再拼接得到 t 我们考虑互相ANA的两串字符串 s 和 t 我们称 t 是 s ...

  4. xv6 系统调用

    1. 系统调用的实现 开发程序需所有的接口在user.h中,包含两部分system call和ulib user.h中的系统接口函数在usys.S中通过汇编实现 #define SYSCALL(nam ...

  5. 直击JDD | 共建智能新城 京东云让城市生活变得简单美好

    技术快速革新,创新持续激发.在"智能+"时代,云计算.大数据.5G等新技术,已成为社会生产方式变革.创新人类生活空间的重要力量--11月19日,JDD-2019京东全球科技探索者大 ...

  6. MySQL--SHOW ENGINE INNODB STATUS

    ===================================== -- :: 0x7f305b965700 INNODB MONITOR OUTPUT =================== ...

  7. 内存管理之栈stack

    1.什么是栈   栈是一种数据结构,C语言中使用栈来保存局部变量.栈是被发明出来管理内存的.2.栈管理内存的特点(小内存.自动化)   先进后出  FILO   first in last out   ...

  8. vue中报错Props with type Object/Array must use a factory function to return the default value

    Invalid default value for prop "value": Props with type Object/Array must use a factory fu ...

  9. CSS 之pseudo-classes 与pseudo-element的异同

    从W3School找到相关资料如下: 伪类: 伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息. 伪类由一个冒号:开头,冒号后面是伪类的名称和包含在 ...

  10. NodeJS框架一览

    NodeJS 框架一览 Express 当你使用Node.js构建web应用程序时, Express通常被视为事实上的Web服务器.它的哲学(一个可以使用中间件包扩展的简约核心)是大多数Node.js ...