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 ...
随机推荐
- team foundation server——网络代码管理工具
像我们平时有时会莫名的弹出一个如下图所示的提示框,这个是什么呢?这个就是有人用team foundation server进行过代码管理的项目 那么team foundation server到底是什 ...
- 图片上传和显示——上传图片——上传文件)==ZJ
http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传 http://www.cnblogs.com/mq ...
- 站内搜索——Lucene +盘古分词
为了方便的学习站内搜索,下面我来演示一个MVC项目. 1.首先在项目中[添加引入]三个程序集和[Dict]文件夹,并新建一个[分词内容存放目录] Lucene.Net.dll.PanGu.dll.Pa ...
- CSS3 GRID LAYOUT
CSS3 GRID LAYOUT http://www.w3cplus.com/blog/tags/356.html 中国首个开源 HTML5 跨屏前端框架 http://amazeui.org/
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程
/**-- ============================================= Author: xft CteateDate: 2013-10-11 Description:查 ...
- 取消Git代理设置
昨天由于在用sourceTree上传下拉代码的时候,速度实在太慢,就照着百度上的方法设置了代理,结果导致sourceTree无法访问服务器,经检查排除发现可能是因为公司网络不能使用代理,被防火墙挡住了 ...
- springMvc全局异常处理
本文中只测试了:实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器 对已有代码没有入侵性等优点,同时,在异常处理时能获取导致出现异常的对象,有利于提 ...
- linux系统下who&who am i与whoami的区别,以及与select * from dba_users的区别
who am i :表示登录此虚拟机(或者计算机)时,使用的操作系统级别用户名称 whoami:表示当前正在使用的操作系统级别用户名称 select username from dba_users;查 ...
- 【日常笔记】datatables表格数据渲染
现在有很多表格渲染方式 这里只是记录怎么使用datatables渲染数据 使用datatables可以更方便的来渲染数据 [中文api]http://datatables.club/index.htm ...
- 文本溢出省略解决笔记css
text-overflow:ellipsis; overflow:hidden; white-space:nowrap; *white-space:nowrap;