前言
- 提到MVVM框架我们很容易想到MVC框架,iOS中,我们使用的大部分都是MVC架构,虽然MVC的层次明确,但是由于功能日益的增加,代码的维护,更多的代码被写在了Controller中,这样Controller就显得非常臃肿。
- 为了给Controller瘦身,减少 View Controller 的复杂性并使得表示逻辑更易于测试。后来又从MVC衍生出了一种新的架构模式MVVM架构
一、 MVVM原理
- Model-View-ViewModel 是 M-V-VM 三部分组成,它本质上就是 MVC 的改进版。
- Model:指后端传递的数据(本地数据、网络加载数据)。
- ViewController/View: 展示层,显示用户可见得视图控件、与用户交互事件。界面的生命周期控制和业务间切换控制。
- ViewModel: 是MVVM的核心,是连接view和model的桥梁,它有两个方向:
(1)一是将模型(Model)转化成视图 (View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
(2)二是将视图 (View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件 监听。这两个方向都实现的,我们称之为数据的双向绑定。
- MVVM 就是将其中的 View 的状态和行为抽象化,其中 ViewModel 将视图 UI 和 业务逻辑分开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑
- MVVM 采用双向数据绑定。View 中数据变化将自动反映到 ViewModel上,同样 Model 中数据变化也将会自动展示在页面上
- MVVM 的核心思想就是是关注 Model 的变化,让 MVVM 框架利用自己的机制自动更新 DOM,也就是所谓的数据-视图分离
二、MVVM模式的通讯关系
- View与Model是不直接通讯的。
- ViewController与Model是不直接通讯的。
- View只与ViewController / ViewModel两者发生关系。
- Model只与ViewModel通讯。
1、在MVVM 中,view 和 view controller正式联系在一起,我们把它们视为一个组件 View 和 View
2、controller 都不能直接引用model,而是引用视图模型(ViewModel)
3、ViewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方
4、使用MVVM会轻微的增加代码量,但总体上减少了代码的复杂性
三、MVVM模式的优缺点
优点:文章来源:https://www.toymoban.com/news/detail-782610.html
- 代码清晰:ViewModel 分离出来大部分的 Controller 代码,更加清晰和容易维护
- 方便测试:大部分 Bug来自于逻辑处理,由于 ViewModel 把逻辑分离出来,可对 ViewModel 构造单元测试
- 开发解耦:一位开发者负责逻辑实现,另一位开发者负责 UI 实现
缺点:文章来源地址https://www.toymoban.com/news/detail-782610.html
- 代码量比 MVC 多、需对每个 Controller 实现绑定,这是分离不可避免的工作量
- 数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。
到了这里,关于iOS----MVVM模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!