MVVM

来源:互联网 发布:放置江湖武功最新数据 编辑:程序博客网 时间:2024/06/15 10:33

       1.MVVM 是 MVC 模式的一种演进,它主要解决了 ViewController 过于臃肿带来的不易维护和测试的问题。其中 ViewModel 的主要职责是处理业务逻辑并提供 View 所需的数据,这样 VC 就不用关心业务,自然也就瘦了下来。ViewModel 只关心业务数据不关心 View,所以不会与 View 产生耦合,也就更方便进行单元测试。

      2.View 是一个壳,它所呈现的内容都需要由 ViewModel 来提供,而 View 又不与 ViewModel 直接沟通,这时就需要 ViewController 来做中间的协调者。ViewController 持有 View 和 ViewModel,当 VC 初始化时,会让 ViewModel 去取数据,简单来说就是调用 VM 的某个获取数据的方法,当 ViewModel 拿到数据后,可以把结果以 Delegate 的方式通知 VC,这样做的好处是比较符合苹果既有的设计模式,而且也可以通过查看 Delegate 协议来知道 VM 暴露了哪些接口供外部使用。

Tips

  • ViewController 尽量不涉及业务逻辑,让 ViewModel 去做这些事情。
  • ViewController 只是一个中间人,接收 View 的事件、调用 ViewModel 的方法、响应 ViewModel 的变化。
  • ViewModel 不能包含 View,不然就跟 View 产生了耦合,不方便复用和测试。
  • ViewModel 之间可以有依赖。
  • ViewModel 避免过于臃肿,不然维护起来也是个问题。