MVVM模式

前言一、 MVVM原理二、MVVM模式的通讯关系三、MVVM模式的优缺点

前言

提到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模式的优缺点

优点:

代码清晰:ViewModel 分离出来大部分的 Controller 代码,更加清晰和容易维护方便测试:大部分 Bug来自于逻辑处理,由于 ViewModel 把逻辑分离出来,可对 ViewModel 构造单元测试开发解耦:一位开发者负责逻辑实现,另一位开发者负责 UI 实现

缺点:

代码量比 MVC 多、需对每个 Controller 实现绑定,这是分离不可避免的工作量数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: