文章包含以下内容:
- 什么是mvvm
- mvvm的优点
- mvvm的问题
什么是MVVM
MVVM 全称 Model–view–viewmodel,四个部分的关系如图:
- View 是用户在屏幕上看到的结构、布局和外观,也称UI。
- ViewModel 是一个绑定器,能和 View 层和 Model 层进行通信。
- Model 是数据和逻辑。
MVVM 的特性与价值
MVVM 的核心实现是由 ViewModel 实现数据双向绑定(data-binding),View的变动,自动反映在 ViewModel,反之亦然。它的核心思想是分离,也就是通过 ViewModel 让 View 层和 Model 层解耦,目的是想让设计师专注 View 层的设计和编写,软件工程师专注 Model 层的业务逻辑编写。
MVVM 简化了业务与界面的依赖关系,优化了数据频繁更新的解决方案。
MVVM 的优点
对于部分中小项目而言,MVVM具有以下优点:
- Controller清晰简洁: ViewModel分离了大部分Controller代码,更加清晰和容易维护。
- 方便测试:开发中大部分Bug来至于逻辑处理,由于ViewModel分离了许多逻辑,可以对ViewModel构造单元测试。
- 开发解耦,比如 a.一人负责逻辑实现、另一人负责UI实现;b.敏捷开发时,会发经常发不是等后端做好了接口我们再去开发,不过在没有接口的情况下通常我们可以把Controller和View完成。
MVVM 的问题
- 对于大型项目,view-model的双向绑定会造成大量的内存消耗。
- 数据绑定使得 Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。