认识MVVM
来源:互联网 发布:网络男歌手到不了 编辑:程序博客网 时间:2024/05/21 20:30
- 说到MVVM,就必须先说MVC,众所周知,MVC就是Model显示数据,View呈现用户界面Controller调节二者之间的交互,但是这个结构存在的问题就是模型的代码太少,而随着功能的增加控制器的代码会越来越多,而且不方便测试(比如办一个饭卡,默认是一百元)
- 在MVVM中,view和view controller正式联系在一起,我们将它视为一个组件,这两个都不能直接引用model,而是一用视图模型view model,里面放置着用户输入验证逻辑,视图显示逻辑,发送网络请求等代码,view model再去引用model
- 这个优点,首先就是低耦合,view可以独立于model变化和修改,一个viewModel可以绑定到不同的view上,可重用性,也有利于独立开发,开发人员可以专注业务逻辑和数据的开发,设计人员可以专注于页面设计
- 实际用例
-楼市餐厅需要冲餐卡,默认是100元,在模型层中,如果想保存这个值–>let balance = 100
-但是展示给用户的时候,我们想呈现出”您的账户余额为:¥100”,在mvc中,这种代码只能放到试图控制器中,显得很臃肿,如果放在模型中,会更丑,因为有许多进行格式化的代码挤在其中
-如果添加视图模型,仅仅需要映射一下原始数据
struct AccountViewModel {let dispalyBalance: Stringinit(mode: cardAccount) { let formattedBalance = model.balance.currencyValue; displayBalance = "Your balance is \(formatterBalance)"}}
-通过这种方式,视图模型实际上会读取数据模型,然后将其中的信息进行格式化,从而准备展现在视图当中,从而准备展现的视图当中,很容易测试,直接把带有账户信息的模型放进去,然后测试显示就可以了,在之前是特别复杂的
- 去年WWDC上,Andy(ISO4.1-8的UIKit框架爱维护者)演讲中有一个关于zoetrope(西洋镜)的例子
- 大概意思就是每一帧都是静态值,可以通过改变任务手部抬起的距离,或者任务头部倾斜的距离,来对字符进行编码.每一帧都是静态的,但是当把他们放在一起,然后一直看向一个中心的话,那么始终都有新的数据出现,这样就可以得到一个美丽的,生动的动图
- 我们可以使用相同的方式来实现值类型,视图控制器会跟随zoetrope的最后一个帧图像–也就是最新的一块活跃数据,然后将其展示个用户.只要您的模型放生了更新,视图就会根据最新的信息进行更改了 (帧动画原理)
var viewModel = ViewModel(model:Account)
0 0
- 认识MVVM
- ExtJS5 - 认识MVVM
- 初学者MVVM的认识
- 简单认识MVC,MVP,MVVM
- 对MVVM等的认识
- MVVM
- MVVM
- MVVM
- MVVM
- MVVM
- MVVM
- MVVM
- MVVM
- mvvm
- MVVM
- MVVM
- mvvm
- MVVM
- ★OpenCV 角点检测之Harris角点检测
- linux jdk-8u11-linux-x64.tar.gz 安装
- 【读书笔记】《Effective Java》(5)--枚举和注解
- C++与C区别简述
- Unity5烘焙
- 认识MVVM
- UnityShader - 屏幕特效 - 刺目光亮(Bloom)
- dwz 日期空间onchange事件
- 人脸验证算法Joint Bayesian详解及实现(Python版)
- ASCII
- Java集合浅析
- Hibernate基于Annotation配置(二)
- Leetcode 61 Rotate List
- Mahout Canopy+K-Means