MVVM
MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model)
接下来给大家分享一个总结的MVVM,来吧------------------------

- MVC 存在的问题
- 模型的代码很少
- 控制器的代码一不小心就越来越多
- 不好测试
MVVM
- MVVM 结构图

MVVM 概念
- 在 MVVM 中,
view和view controller正式联系在一起,我们把它们视为一个组件 view和view controller都不能直接引用 model,而是引用视图模型view model是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
- 在 MVVM 中,
MVVM 使用注意事项
view引用view model,但反过来不行view model引用了model,但反过来不行- 如果我们破坏了这些规则,便无法正确地使用 MVVM
MVVM 的优点
- 低耦合:
View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上 - 可重用性:可以把一些视图逻辑放在一个
ViewModel里面,让很多view重用这段视图逻辑 - 独立开发:开发人员可以专注于业务逻辑和数据的开发
ViewModel,设计人员可以专注于页面设计 - 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对
ViewModel来进行测试
MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model)
MVC 回顾
- MVC 结构图

- MVC 存在的问题
- 模型的代码很少
- 控制器的代码一不小心就越来越多
- 不好测试
MVVM
- MVVM 结构图

MVVM 概念
- 在 MVVM 中,
view和view controller正式联系在一起,我们把它们视为一个组件 view和view controller都不能直接引用 model,而是引用视图模型view model是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
- 在 MVVM 中,
MVVM 使用注意事项
view引用view model,但反过来不行view model引用了model,但反过来不行- 如果我们破坏了这些规则,便无法正确地使用 MVVM
MVVM 的优点
- 低耦合:
View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上 - 可重用性:可以把一些视图逻辑放在一个
ViewModel里面,让很多view重用这段视图逻辑 - 独立开发:开发人员可以专注于业务逻辑和数据的开发
ViewModel,设计人员可以专注于页面设计 - 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对
ViewModel来进行测试
MVVM的更多相关文章
- <Android基础> (五) 广播机制
1)接收系统广播:a.动态注册监听网络变化 b.静态注册实现开机启动 2)发送自定义广播:a.发送标准广播 b.发送有序广播 3)使用本地广播 第五章 5.1 广播机制 Android中的每个程序都可 ...
- Android基础(五) Service全解析----看不见的Activity
一.服务的介绍: 作为Android四大组件之中的一个,Service(服务)也常常运用于我们的日常使用中,它与Activity的差别在于:Service一直在后台执行.没实用户界面.所以绝不会到前台 ...
- Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解
只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- 基础4 Android基础
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
- Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍
系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...
- android基础---->service的生命周期
服务是一个应用程序组件代表应用程序执行一个长时间操作的行为,虽然不与用户交互或供应功能供其它应用程序使用.它和其他的应用对象一样,在他的宿主进程的主线程中运行.今天我们开始android中普通serv ...
- android基础---->XMl数据的解析
在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...
- Android基础工具类重构系列一Toast
前言: 一直在考虑写一下Android实际项目中的一些总结,翻看CSDN博客,上一篇已经是一年多曾经. 本系列定位Android基础工具类重构.旨在记录实际项目中经经常使用到的一些工具类,比方Toas ...
- android基础---->DiskLruCache的使用及原理
DiskLruCache是谷歌推荐的用来实现硬盘缓存的类,今天我们开始对于DiskLruCache的学习.DiskLruCache的测试代码:DiskLruCache的测试代码下载.关于FidkLru ...
随机推荐
- P值,“差异具有显著性”和“具有显著差异”
P值是论文中最常用的一个统计学指标,可是其误用.解释错误的现象却很常见.因此,很有必要说明p值的意义.用法及常见错误. P值指的是比较的两者的差别是由机遇所致的可能性大小.P值越小,越有理由认 ...
- shell note
1 输出重定向:ll > aaa 将输出内容 添加到aaa文件中 ll >> aaa将输出内容追加到aaa中 ll &>> abc 将输出内容不论正确或错误都保存 ...
- RHEL7挂载ISO做本地yum
测试环境,网络yum源没有本地yum源下载速度快!Yum比起RPM装包的好处就是可以自己处理依赖关系,也就是自己安装相关的依赖包,用起来也是很方便,但是删包的时候也会删除依赖包,这里要非常小心 01. ...
- 【JavaEE企业应用实战学习记录】getConnListener
Listener:当Web应用在Web容器中运行时,Web应用内部会不断地发生各种事件,如Web应用被启动.Web应用被停止,用户Session开始,用户session结束.用户请求到达等,这些对We ...
- [转]java反射机制
原文地址:http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html 一.什么是反射机制 简单的来说,反射机制指的是程序在运 ...
- [转]JDBC中日期时间的处理技巧
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...
- javascript 方法实例
输出对象的属性名称与值 : boj(o){ for(var p in o){ console.log(p + ":" + o[p] + "\n"); } } 构 ...
- html页面中meta的作用
meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...
- ORA-01157错误,丢失undo tablespace中数据文件的解决方法
我们先来看一下这个现象: [oracle@djp ora12]$ pwd /u01/app/oracle/oradata/ora12 [oracle@djp ora12]$ mv undotbs01. ...
- 【BZOJ-4059】Non-boring sequences 线段树 + 扫描线 (正解暴力)
4059: [Cerc2012]Non-boring sequences Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 16 ...