MVVM

檀木雨林 2020-04-11

MVVM

Model

Model 是用来表示我们会对其进行处理的实际数据,而且其中不应该包含逻辑。

View

View 是直接与用户交互的,也不应该包含逻辑,只需要告诉它如何显示,并且在触发事件之后进行转发。

ViewModel

ViewModel 会跟踪 View 的事件,和Model 层传给它的数据。他会公开属性和方法,帮住View 保持最新的状态。

ViewController (iOS)

在 MVVM 中,并没有ViewController,但是在iOS 中你可以直接把ViewController理解成 View,当然你可以把它叫做 MVCVM ,不要在意这些细节。ViewController 监听事件的触发,然后通知ViewModel进行处理。

ViewModel 一些规则:

  1. ViewModel 不能直接调用 ViewController 的方法,所以这里有一个委托来处理这些事情。
  2. 状态变更之后,ViewModel 通过委托通知 ViewController 重新加载视图。
  3. ViewModel 只能在主线程调用委托方法。
  4. ViewModel 中暴露的属性必须是与ViewController 匹配的类型,这样可以避免属性类型的转换和解包操作

ViewController 也应该遵守几个规则

  1. ViewController 不能被ViewModel 直接调用,而是通过协议中隐式通知。
  2. reloadViews 更新视图的方法 可以在任何地方调用多次。

相关推荐