以下摘抄自维基百科对MVVM的搜索结果(本页面最后修订于2020年7月21日 (星期二) 11:26),摘抄时间为2020年9月18号。

MVVM(Model-View-ViewModel) (维基百科搜索)

MVVM(Model-view-viewmodel)是一种软件架构模式。
MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑或后端逻辑(数据模型)的开发分离开来,这是通过置标语言或GUI代码实现的。MVVM的视图模型是一个值转换器,这意味着视图模型负责从模型中暴露(转换)数据的对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大多数视图的显式逻辑。视图模型可以实现中介者模式,组织对视图所支持的用例集的后端逻辑访问。
MVVM是马丁-富勒的PM(Presentation Model)设计模式的变体。MVVM以相同的方式抽象出视图的状态和行为,但PM以不依赖于特定用户界面平台的方式抽象出视图(创建了视图模型)。
MVVM和PM都来自于MVC模式。
MVVM由微软构架师Ken Cooper和Ted Peters开发,通过利用WPF(微软.NET图形系统)和Silverlight(WPF的互联网应用派生品)的特性来简化用户界面的事件驱动设计。微软的WPF和Silverlight构架师之一John Gossman于2005年在他的博客上发表了MVVM。
MVVM也被成为model-view-binder,特别是在不涉及.NET平台的实现中。ZK(Java写的一个Web应用框架)和KnockoutJS(一个JavaScript库)使用model-view-binder。

MVVM模式的组成部分

模型

模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。

视图

就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。

视图模型

视图模型是暴露公共和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。

绑定器

声明性数据和命令绑定隐含在MVVM模式中。在Microsoft解决方案堆中,绑定器是一种名为XAML的标记语言。绑定器使开发人员免于被迫编写样板逻辑来同步视图模型和视图。在微软的堆之外实现时,声明性数据绑定技术的出现是实现该模式的一个关键因素。

理论基础

MVVM旨在利用WPF中的数据绑定函数,通过从视图层中几乎所有GUI代码(代码隐藏),更好地促进视图层开发与模式其余部分的分离。不需要用户体验(UX)开发人员编写GUI代码,他们可以使用框架标记语言(如XAML),并创建到应用程序开发人员编写和维护的视图模型的数据绑定。角色的分离使得交互设计师可以专注与用户体验需求,而不是对业务逻辑进行编程。这样,应用程序的层次可以在多个工作流中进行开发以提高生产力。即使一个开发人员在整个代码上工作,视图与模型的适当分离也会更加好笑,因为基于最终用户反馈,用户界面通常在开发周期中经常发生变化,而且处于开发周期后期。
MVVM模式试图获得MVC提供的功能性开发分离的两个优点,同时利用数据绑定的优势和通过绑定数据的框架尽可能接近应用程序模型。它使用绑定器、视图模型和任何业务层的数据检查功能来验证传入的数据。结果是模型和框架驱动尽可能多的操作,消除或最小化直接操纵视图的应用程序逻辑(如代码隐藏)。

批评

对这种模式的批评来自MVVM的创造者John Gossman本人,他指出,实现MVVM的开销对于简单的UI操作是"过度的"。他说,对于更大的应用来说,推广ViewModel变得更加困难。而且,他说明了非常大的应用程序中的数据绑定会导致相当大的内存消耗。

MVVM(维基百科搜索)相关推荐

  1. python 维基百科爬虫_如何使用Python提取维基百科数据

    python 维基百科爬虫 这是本教程的可视版: 我需要指出的是,我们不会手动抓取Wikipedia页面, Wikipedia模块已经为我们完成了艰巨的工作. 让我们安装它: pip3 install ...

  2. 海外市场推广:企业品牌如何创建维基百科词条?维基百科词条的创建流程

    海外市场推广:企业品牌如何创建维基百科词条?维基百科词条的创建流程 1.研究维基百科页面的主题 在您创建自己的文章之前,请确保您拥有一个合理的主题,这个主题是有来源且无偏见的. 您的写作应该是高质量的 ...

  3. mediawiki java api_维基百科 MediaWiki API 解析

    使用开放的 API 做一个自己的小项目,是一个很好的学习方法.但好像开放的 API 选择并不多.这里给大家多一个选择,简单介绍一下维基百科使用的 MediaWiki API. 简介 先简单介绍几个容易 ...

  4. 维基百科创始人:将欧盟隐私规定推至全球将带来灾难

    维基百科联合创始人吉米·威尔士(Jim Wales)表示,如果法国政府将其隐私保护规定推广至全球,那么将开启"灾难的罐子",引发全球范围内的审查活动. 上月,法国数据保护监管部门提 ...

  5. 如何自己搞一个维基百科?

    大家平时查询资料都喜欢用什么搜索工具呢? 也许很多人都是百度吧,但是也有一部分小伙伴习惯使用维基百科~ 维基百科(Wikipedia),又称人民的百科全书,是来自世界各地的人民用不同的语言共同创建的百 ...

  6. Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量

    Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...

  7. PyQt - 维基百科,自由的百科全书

    PyQt - 维基百科,自由的百科全书 PyQt 维基百科,自由的百科全书 跳转至: 导航. 搜索 PyQt 開發者 Riverbank Computing 穩定版本 4.9.5/ 2012年9月29 ...

  8. 【NLP】利用维基百科促进自然语言处理

    作者 | Nicola Melluso 编译 | VK 来源 | Towards Data Science 介绍 自然语言处理(NLP)正在兴起.计算语言学和人工智能正在联手促进新的突破. 虽然研究的 ...

  9. podcast播客资源_为什么播客是我的新维基百科-完美的非正式学习资源

    podcast播客资源 In this article, I'll explain why podcasts replaced a lot of my Wikipedia usage for info ...

  10. Meta开发了一个AI模型,尝试解决维基百科的「性别偏见」问题

    来源:SiliconANGLE 出品:科技行者 撰文:海外来电 图片:海外来电 为了解决两性人物传记比例失衡的情况,Meta操碎了心. 维基百科一直是全球访问量Top 10的网站,是许多人搜索历史人物 ...

最新文章

  1. 利用ngxtop实时监控nginx的访问情况
  2. 斐波那契数列及其优化
  3. wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们...
  4. 到底要不要报考“通信工程”?
  5. 利用ettercap进行简单的基于数据库的ARP毒化攻击
  6. 在 iOS 客户端上通过 bitcode 为第三方库修复 bug
  7. warning C4996 错误
  8. 玩转MP4视频格式制作转换秘籍
  9. 好看又实用的英文字体
  10. jvm System.gc()说明
  11. 计算机考研408的算法题详解
  12. 我是猫,一只特立独行的猫
  13. java模板方法模式_Java设计模式之模板方法模式
  14. 家用洗地机有什么优缺点?入门级家用洗地机
  15. python学习小组分组程序_【Python】每日一练:学生学习小组分组程序
  16. C/C++加减乘除运算效率分析
  17. 解决!只有IE64位浏览器能上网,其他软件都上不了网
  18. 各领域机器学习数据集汇总(附下载地址)
  19. 福昕阅读器如何设置背景和文字颜色
  20. hadoop错误DataXceiver error processing WRITE_BLOCK operation

热门文章

  1. 【读书笔记】关键影响力:如何调动团队力量
  2. 边缘增强算法MATLAB,基于MATLAB的图像增强算法研究及实现
  3. python续行_python的续行
  4. 启动服务器应用程序失败,打开系统管理时提示:autoupdateserviceset.exe 应用程序错误 应用程序无法正常启动,请单击确定 关闭应用程序。...
  5. 12306自动抢票软件
  6. 获取中国票房网的五年间年度票房的数据信息(初学者完整代码)
  7. windows xp\windows7\windows8\windows10\windows11原版镜像下载地址汇总
  8. AdMob(app内嵌广告)使用入门
  9. The Devil Wears Prada-16
  10. 计算机组策略主要功能,组策略的作用和功能