ViewModel I: 它到底是什么

Model View Controller(以下简称MVC)是一个很实用的设计模式(design pattern)。它明确分离了数据层Model,视图层View,将两者通过一些Controller类型连接起来,使View视图上的用户交互可以更新相应的数据Model;数据Model的变化(可能来自网络请求,用户交互等)反应到对应的视图Views上面。

任何设计模式都可以被滥用。MVC也不例外。我们常常听到Massive View Controller,这个MVC常遇到的滥用问题,巨大的View Controller类,充斥着多种职责的逻辑代码。Massive View Controller同样可以缩写成MVC,正好讽刺MVC模式。

使用MVC的时候,需要注意以下几点:

  1. Controller不等同于View Controller
  2. 每个Controller应该遵循单一原则
  3. View Controller可以包含多个子View Controller
  4. 复杂的View应该封装成独自UI组件,而不是在View Controller里进行组装
  5. MVC只是一个设计模式,不是架构,它可以和很多其他设计模式一起使用
  6. MVC可以和Coordinator,Router等管理页面流动navigation flow的技巧联用

因为MVC模式在每个人心里都有自己的MVC风格,而且对于新人来说比较容易被滥用,很多项目开始使用其他设计模式,比如Model View ViewModel(简称MVVM),VIPER,Elm-inspired的模式,希望更严格更明确的功能定义和分类可以使项目开发更好维护,新人更容易上手可以写出和整个项目同样风格的代码。就像我前任公司,就基于Redux设计了一套自己的设计模式。虽然新人需要简单讲解之后才能上手开发,但是开发过程就如同填空题一样,增加了写出很烂的代码的难度。

和MVC一样,MVVM同样可以被滥用。而且,和MVC一样,不同MVVM项目有着多种MVVM风格。正所谓一千个人的眼中就有一千种ViewModel。本系列文章专注讲解MVVM中ViewModel,让大家理解什么是ViewModel,如何正确使用它。

ViewModel是什么

View,顾名思义是视图,用户看到的展示界面,可以相应用户的交互操作。

Model,同样很好理解,数据,用户界面的背后业务逻辑中模型类。一系列相关的数据组合起来,他们决定了用户所看到的页面里展示的内容。

那ViewModel是什么?

top Created with Sketch.