【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!
MVVM概念的提出和来源
【编辑推荐】
- 17个晋升iOS开辟效力的必用对象
- iOS开辟-基本框架
- 小白若何晋级入门级iOS开辟者
- iOS开辟者的 WWDC 2016 欲望清单
- iOS开辟-你真的会用SDWebImage?
MVVM是Model-View-ViewModel的简写,最早是由微软公司提出场应用,是MVP(Model-View-Presenter)模式与WPF浇忧⒛应用方法时成长演变过来的一种新型架构架构。
MVVM概念解释和要点
一、根本概念

mvvm1.png
- Model:重要为应用法度榜样供给数据。
- View:照样MVC和MVP中的那个表示层,同时实现UI元素和ViewModel属性的绑定。
- ViewModel:为View供给数据支撑。
以胖瘦的不雅点来看,在MVVM中的Model平日是胖Model即竽暌剐数据属性的定义也稀有据拜访和处理的行动。ViewModel平日是瘦Model只稀有据属性,一般含有少量逻辑。
二、根本要点
- View持有ViewModel:在View中经由过程绑定的方法接洽关系UI元素和ViewModel的属性,UI元素的属性变更和ViewMode的数据属性进行双向影响。
- ViewModel持有Model:Model为ViewModel供给数据支撑,同时ViewModel的数据属性变更也会影响Model上,用于数据提交等。
简单概括一句话:Goo是MVVM模式在IOS开辟中的具体实现。应用Goo开辟不会改变现有的开辟习惯,在一个开辟中可以根据具体场景的便利性推敲是否应用Goo,总之Goo具有小巧、灵活和易用等的特点。
举个栗子
Model和ViewModel的功能差别在于,ViewModel是View供给数据支撑的,其构造和View保持一致。Model来源竽暌冠营业处理,保持营业数据的根苯接洽关系和完全性。 - 当Model层停止萌芽或者运算时将结不雅更新到ViewModel层,ViewModel层因为存在和View的绑定,使得UI层获得通知更新,表现了数据驱动界面的思惟。
三、长处
MVVM模式和MVC模式一样,重要目标是分别视图(View)和模型(Model)有几大年夜长处:
- 低耦合。经由过程ViewMode隔离了View和Model,使得View和Model彼此自力,一方的变更和修改不会影响到别的一方。
- 可重用性。一个Model和ViewModel可以办事于很多View。
- 自力开辟。让UI开辟工作和营业处理工作分开,合适团队工作。
- 可测试。界面素来是比较难于测试的,而如今测试可以针对ViewModel来写。
MVVM的经典范例WPF
MVVM并不是一个新的概念,今朝因为在移动开辟的应用又被大年夜家广泛评论辩论。要讲解MVVM无论是大年夜来源、概念的定义和最佳应用都弗成能分开WPF。
MVVM和WPF结应时除了知足MVVM根本架构模式外,因为在UI编辑时(Xaml)支撑多模式的数据和事宜绑定完美实现View和ViewModel的对接,同时转换器和触发器的应用又包管了其灵活性。所以无论是要深刻的懂得MVVM照样寻求以MVVM模式构建产品,都建议大年夜家细心的研读WPF相干开辟常识,是个很好的参照。
MVVM在移动开辟中的应用
移动开辟中应用MVVM时,view和viewcontroller(安卓:局文件和Activity)正式岷系袈溱一路,我们把它们视为一个组件。视图view仍然不克不及直接引用模型model,当然controller也不克不及。相反,他们引用视图模型viewmodel。

MVVM.png
用户输入验证逻辑,视图显示逻辑处理平日照样要放在ViewController进行,不过对于视图的┞菲握尽可能经由过程ViewModel的数据属性却竽暌拱响而不是直接操作。提议收集要乞降数据存贮等处理可以放在Model进行然则弗成以有任何视图本身的引用。( model中应用 #import UIKit.h)
展示逻辑(presentation logic)可以放在了view model中(比如model的值映射到一个格局化的字符串),视图控制器本身就会不再痴肥。应用MVVM的App是高度可测试的;因为view model包含了所有的┞饭示逻辑并且不会引用view,所以它可以经由过程编程方法充分测试。
在android开辟方面貌前已有像 RoboBinding 如许的架构,可以实如今构造文件中完成与ViewModel的绑定工作。IOS中平日建议MVVM与 ReactiveCocoa 结合应用。
Goo框架:IOS的MVVM模式的实现

ReactiveCocoa作为响应式变成概念上确切很火热也备受推许。大年夜架构设计思惟进修的角度,小我也是很爱好的。然则主导在产品开辟中应用照样不肯意的。俗话说爱好一件事物原因有很多种,不爱好的原因只须要一个,Reactive有别于传统思路和根本IOS开辟思维须要一订价值的的进修价值是每个团队都不肯意接收的。
Goo是什么?
如图运行效不雅,实现经由过程实现如下几个小功能来对Goo进行展示。
Goo.gif
1:在TextField中输入数据下面的Label同步显示
2:单击左侧按钮改变数据内容,同时影响TextField和Label显示内容
3:单击右侧按钮该数据属性,同时影响TextField和Label的不合属性。
接下来看应用Goo来实现的具体代码情况
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib._vm = [TrialDataVM using];_vm.text = @"123";[self.inputText bindingWithProperty:@"backgroundColor" withObject:_vm withDataSource:@"backgroundColor" withBindingMode:TwoWay];[self.inputText bindingWithProperty:@"text" withObject:_vm withDataSource:@"text" withBindingMode:TwoWay];[self.hineLbl bindingWithProperty:@"text" withObject:_vm withDataSource:@"text" withBindingMode:OneWay];[self.hineLbl bindingWithProperty:@"textColor" withObject:_vm withDataSource:@"backgroundColor" withBindingMode:OneWay]; }- (IBAction)clickAction:(id)sender { _vm.text = @"456";}- (IBAction)otherAction:(id)sender { _vm.backgroundColor =[UIColor redColor];}
推荐阅读
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!
以金融行业为例,《收集安然法》中明白指出银行业及金融机构不仅是收集办事的供给者,也是关键信息基本举>>>详细阅读
本文标题:移动开发架构之MVVM模式
地址:http://www.17bianji.com/lsqh/36252.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示