MVVM模式

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


前言

  • 提到MVVM框架我们很容易想到MVC框架,iOS中,我们使用的大部分都是MVC架构,虽然MVC的层次明确,但是由于功能日益的增加,代码的维护,更多的代码被写在了Controller中,这样Controller就显得非常臃肿。
  • 为了给Controller瘦身,减少 View Controller 的复杂性并使得表示逻辑更易于测试。后来又从MVC衍生出了一种新的架构模式MVVM架构

一、 MVVM原理

  1. Model-View-ViewModel 是 M-V-VM 三部分组成,它本质上就是 MVC 的改进版。
  • Model:指后端传递的数据(本地数据、网络加载数据)。
  • ViewController/View: 展示层,显示用户可见得视图控件、与用户交互事件。界面的生命周期控制和业务间切换控制。
  • ViewModel: 是MVVM的核心,是连接view和model的桥梁,它有两个方向:
    (1)一是将模型(Model)转化成视图 (View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
    (2)二是将视图 (View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件 监听。这两个方向都实现的,我们称之为数据的双向绑定。
  1. MVVM 就是将其中的 View 的状态和行为抽象化,其中 ViewModel 将视图 UI 和 业务逻辑分开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑
  2. MVVM 采用双向数据绑定。View 中数据变化将自动反映到 ViewModel上,同样 Model 中数据变化也将会自动展示在页面上
  3. MVVM 的核心思想就是是关注 Model 的变化,让 MVVM 框架利用自己的机制自动更新 DOM,也就是所谓的数据-视图分离

ios mvvm如何使用 ios mvc mvvm mvp_ios

二、MVVM模式的通讯关系

  1. View与Model是不直接通讯的。
  2. ViewController与Model是不直接通讯的。
  3. View只与ViewController / ViewModel两者发生关系。
  4. Model只与ViewModel通讯。

ios mvvm如何使用 ios mvc mvvm mvp_ios mvvm如何使用_02

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 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。