android mvvm流程图,MVVM框架模式详解

MVVM 定义

MVVM 是 Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对 View 和 ViewModel 的双向数据绑定,这使得 ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定。

在 MVVM 的框架下视图和模型是不能直接通信的。它们通过 ViewModel 来通信,ViewModel 通常要实现一个 observer 观察者,当数据发生变化,ViewModel 能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel 也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且 MVVM 中的 View 和 ViewModel 可以互相通信。

#MVVM 流程图:

bVbfWxq

#MVVM 的特点

#1. 低耦合性。

View 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的 View 上,当 View 变化的时候 Model 不可以不变,当 Model 变化的时候 View 也可以不变。

#2. 可重用性。

把一些视图逻辑放在一个 ViewModel 里面,让很多 View 重用这段视图逻辑,也就是组件化思想。

#3. 独立开发。

开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。

#MVVM 框架模式的好处双向绑定技术,这是 MVVM 思想主打的思想,也是它的最优点

View 的功能进一步的强化,具有控制的部分功能,若想无限增强它的功能,甚至控制器的全部功几乎都可以迁移到各个 View 上(不过这样不可取,那样 View 干了不属于它职责范围的事情)。View 可以像控制器一样具有自己的 View-Model.

由于控制器的功能大都移动到 View 上处理,大大的对控制器进行了瘦身。

可以对 View 或 ViewController 的数据处理部分抽象出来一个函数处理 model。

#MVVM 框架模式的不足数据绑定使得 Bug 很难被调试。界面出现了异常,有可能是 View 的代码有问题,也可能是 Model。

Model 长期持有,不释放内存,就造成了花费更多的内存

数据双向绑定不利于代码重用。客户端开发最常用的重用是 View,但是数据双向绑定技术,让你在一个 View 都绑定了一个 model,不同模块的 model 都不同。那就不能简单重用 View 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 11 操作系统最低硬件要求

以下是在您电脑上安装 Windows 11 操作系统的最低要求。如果您的电脑不满足这些要求,您可能无法在设备上安装全新的 Windows 11 操作系统。处理器( CPU):1 GHz 或更快的支持 64 位的中央处理器(双核或多核)…

法国一家夜总会上演机器人钢管舞

全世界只有3.14 % 的人关注了青少年数学之旅星空新闻报道,法国SC-Club夜总会9月3日邀请机器人跳钢管舞,庆祝其开业5周年。该机器人脚踩高跟鞋,头上是一台CCTV监控仪。发明者称,这是为了引发人们对于“窥探”的思考。店主表示这次演…

Binding(三):资源和ValueConverter

这节讲资源和值转换器(ValueConverter)。资源在XAML中,我们想要使用外部的数据或者类,需要引入其命名空间,然后将其定义为XAML页面的资源,供给控件使用,或者我们需要封装一个共用的样式,同样也需要定义成资…

c语言 overflow_C语言和其他语言的不得不说的差别!

提到C语言,我们知道c语言和其他高级语言的最大的区别就是C语言是要操作内存的!我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的…

html省市区选择器代码,js实现一个省市区三级联动选择框代码分享

运行效果:部分代码:当然首先你数据库中要有这个table,不然你没有数据.....^_^所在地:${xzqh.province}js代码:/*** 加载市**/function loadCity() {var provinceId $("#provinceSelect option:selected").val();if(pro…

做人开心最重要

做人开心最重要 转载于:https://www.cnblogs.com/LeeWenjie/archive/2006/11/23/569502.html

你和学霸的差距,不只是成绩

教育不是只有在校园学习不是只有课堂阅读不是只有书上这几个移动的课堂,可以让大家随时关注它们带你学习更多知识【关注方式 】1 - 搜索公众号ID关注2 - 长按二维码识别关注数学好物ID: webaoming简介:“数学好物”是一个致力为数学爱好者与家长&#x…

Storyboard.storyboard could not be opened. Could not read the archive.

Storyboard.storyboard could not be opened. Could not read the archive. Please use a newer version of Xcode. Consider changing the documents Development Target to preserve compatibility. 用低版本xcode打开高版本xcode下创建的项目时会出现这个错误。 解决办法&a…

Binding(二):控件关联和代码提升

上节我们讲到,使用Binding,我们可以关联后台代码中的属性,在某些情况下,我们可能需要将两个控件关联起来,借助Binding,我们也可以轻松的实现。关联控件设想这样一个场景,界面中有个CheckBox&…

众望所归!中国机器狗能【后空翻】了。。。

全世界只有3.14 % 的人关注了青少年数学之旅在北京亦庄举办的世界机器人大会昨天结束了,这次大会上明显的感觉机械狗多了不少,中瑞福宁展示了四足多用途机器人Anymal,深度学习加持爬行、走路、跑步、跳舞样样精通:上楼梯的Anymal算…

男人别让爱你的女孩流泪

曾经以为付出就会有回报,付出才知道,在她的心里我始终不是最重要,无可奈何花落去,似曾相识燕归来。 经年少轻狂的我不知道什么是珍贵,直到有天,我回忆过去,我才知道眼泪的味道是咸的…… 第一次…

Binding(一):数据绑定

这节开始分几期来讲一下WPF中Binding的相关用法,本节主要讲使用Binding进行数据绑定。Binding的作用在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作,这种赋值形式,从根本上是无法实现界面与逻辑…

世纪渣男何书桓! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源网络,侵权删)渣男,实锤!↓ ↓ ↓

你也可以搞懂的微服务第一篇——来自ThoughtWork的学习体验

????欢迎点赞 :???? 收藏 ⭐留言 ???? 如有错误敬请指正,赐人玫瑰,手留余香!????本文作者:由webmote 原创,首发于 【掘金】????作者格言:生活在于折腾,当你不折…

laravel缓存html,Laravel 静态页面缓存 JosephSilber/page-cache - 码农天地

JosephSilber/page-cache Laravel 静态页面缓存2020-02-26 09:39:53Laravel 页面缓存这个包允许您轻松地将响应缓存为磁盘上的静态文件,以便更快速地加载页面。包管理地址:安装:用 composer 安装 page-cache 包:composer require …

pca 累积方差贡献率公式_机器学习数据降维方法:PCA主成分分析

PCA在机器学习中很常用,是一种无参数的数据降维方法。PCA步骤:将原始数据按列组成n行m列矩阵X将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值求出协方差矩阵求出协方差矩阵的特征值及对应的特征向量将特征向量按对应特征值大…

教程丨亿万网友一起换头像欢庆新中国成立70周年,就差你了!

全世界只有3.14 % 的人关注了青少年数学之旅眼看着2019年国庆节马上要到了大街小巷都挂起来显眼的国旗而今天早上朋友圈更是被“国旗”刷屏一打开朋友圈满屏的国旗微信头像不少网友们都以为只要在朋友圈“微信官方”就能获取定制国旗头像虽说这是一个官方的彩蛋但实际上并不是这…

如何在已安装TMG2010服务器上安装Symantec Backup Exec 2010 Remote Agent

公司一台TMG服务器更换为新服务器,安装部署完TMG2010后,再安装Backup Exec 2010 Remote Agent时无法通过推送方法安装成功,出现如下错误提示: 此时,只好通过手动方法在TMG服务器上安装Be Agent。 登录TMG服务器&#x…

如何在 C# 9 中使用record类型?

原文链接:https://www.infoworld.com/article/3607372/how-to-work-with-record-types-in-csharp-9.html原文标题:How to work with record types in C# 9翻译:沙漠尽头的狼(谷歌翻译加持)利用 C# 9 中的record类型来构建不可变类型和线程安全…

巧用TensorFlow实现图像处理

经过几年的发展,深度学习方法摧枯拉朽般地超越了传统方法,成为人工智能领域最热门的技术。谷歌、亚马逊、百度、Facebook 纷纷开源了自己的深度学习框架。而支撑AlphaGo的核心技术架构,TensorFlow,以其一鸣惊人的绝对表现&#xf…