本帖最后由 余琪琪老师 于 2016-2-27 09:52 编辑
MVVM模式是最近才火起来的一个概念,那它和MVC有什么不同呢?下面深圳问答网的师生来探讨一下这个问题。
Model-View-ViewModel 就是将其中的 View 的状态和行为抽象化,让我们可以将UI和业务逻辑分开。当然这些工作ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。 MVVM模式是通过以下三个核心组件组成,每个都有它自己独特的角色: - Model - 包含了业务和验证逻辑的数据模型
- View - 定义屏幕中View的结构,布局和外观
- ViewModel - 扮演“View”和“Model”之间的使者,帮忙处理 View 的全部业务逻辑
那这和我们曾经用过的MVC模式有什么不同呢?以下是MVC的结构 - View 在 Controller 的顶端,而 Model 在 Controller 的底部
- Controller 需要同时关注 View 和 Model
- View 只能知道 Model 的存在并且能在Model的值变更时收到通知
- ViewModel 替换了 Controller,在UI层之下
- ViewModel 向 View 暴露它所需要的数据和指令对象
- ViewModel 接收来自 Model 的数据
你可以看到这两种模式有着相似的结构,但新加入的 ViewModel 是用不同的方法将组件们联系起来的,它是双向的,而MVC只能单向连接。 概括起来,MVVM是由MVC发展而来 - 通过在 Model 之上而在 View 之下增加一个非视觉的组件将来自 Model 的数据映射到View 中 |