MVVM 定义

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

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

#MVVM 流程图:

#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 了。

android mvvm流程图,MVVM框架模式详解相关推荐

  1. Android  Doze and App Standby模式详解

    Android  Doze and App Standby模式详解 来源:腾云阁 https://www.qcloud.com/community Optimizing for Doze and Ap ...

  2. android 状态模式,Android编程设计模式之状态模式详解

    本文实例讲述了Android编程设计模式之状态模式.分享给大家供大家参考,具体如下: 一.介绍 状态模式中的行为是由状态来决定的,不同的状态下有不同的行为.状态模式和策略模式的结构几乎完全一样,但它们 ...

  3. java备忘录模式 类图,Android编程设计模式之备忘录模式详解

    本文实例讲述了Android编程设计模式之备忘录模式.分享给大家供大家参考,具体如下: 一.介绍 备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态,这有点像我们平时 ...

  4. Android Activity Launch Mode 启动模式详解

    简介 android:launchMode 属性能设置 Activity 对象启动时是否使用已有的实例还是多次创建,会使得交互设计更加良好,也能避免很多问题. 它是 Androidmanifest.x ...

  5. Android UI 测试框架Espresso详解

    Android UI 测试框架Espresso详解 1. Espresso测试框架 2.提供Intents Espresso 2.1.安装 2.2.为Espresso配置Gradle构建文件 2.3. ...

  6. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)

    文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...

  7. Android系统(187)---最易懂的Activity启动模式详解

    Android基础:最易懂的Activity启动模式详解 前言 Android基础中,Activity的启动模式非常重要 本文将全面介绍 Activity的启动模式 目录 目录 1. 定义 即Acti ...

  8. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)

    文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...

  9. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. JAVA HashMap单key多value的实现及迭代器打印(附源码)
  2. c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...
  3. python 可视化_Python数据可视化
  4. 【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)
  5. 使用decode函数
  6. [MSDN]Design Guidelines for Developing Class Libraries with .NET Framework 4
  7. 第四季-专题7-Linux内核链表
  8. 电力网络故障的计算机算法,电力系统故障分析的计算机算法.pdf
  9. 【项目】STC15W408AS--烧写、数码管、按键、串口通信、ADC
  10. 微信表情图像代表什么意思_微信表情含义图解大全(微信58个表情含义图)
  11. 题目29 英文输入法单词联想
  12. Elasticsearch实战 | 必要的时候,还得空间换时间!
  13. 空气质量指数范围对应的类型有哪些?
  14. MMyolo报错:undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationESs 的解决方案
  15. pycharm python interpreter是空的
  16. indexedDB基本使用(内含案例)
  17. 小程序真机调试报错: errMsg“:“hideLoading:fail:toast can‘t be found“?
  18. android xml设置roboto字体,Android:想要为整个应用程序而不是运行时设置自定义字体...
  19. MSN登陆错误解决方法
  20. 百度网页移动端html,移动端使用百度分享代码_html/css_WEB-ITnose

热门文章

  1. Visual Studio 2019 使用 Live Share
  2. ML.NET 0.8特性简介
  3. 广州.net俱乐部12月份ABP框架活动场地征集、志愿者征集、合作讲师\副讲师征集...
  4. 理解 C# 项目 csproj 文件格式的本质和编译流程
  5. 用Middleware给ASP.NET Core Web API添加自己的授权验证
  6. java 检测ip网速_java心跳测网速Demo
  7. [转]vue-codemirror 代码编辑器
  8. C#趣味程序---水仙花数
  9. Android之提示Caused by: java.lang.UnsupportedOperationException: Binary XML file line #67: You must sup
  10. Android之运行PopupWindow提示Unable to add window -- token null is not valid; is your activity running?