美文网首页
MVVM 模式随记

MVVM 模式随记

作者: loiszxy1111 | 来源:发表于2020-07-06 23:42 被阅读0次

随着业务规模的扩大,业务逻辑变得越来越复杂。这样controller中的代码越来越多,传统的MVC架构以及很难满足低耦合,高内聚的设计要求。为了解决这个问题,就提出了MVVM模式。MVVM模式是基于MVC的,最直观的特点是在View和Model之间多加了一层ViewModel来实现数据绑定,从而减轻Controller的压力。图1-1展示了MVVM设计模式的结构

图1-1

MVVM中的ViewModel有以下几个特点:

1.viewmodel是有状态的。viewmodel有自己的属性,还会持有model对象

2.viewmodel与UI控件的无关性。viewmodel并不关心UI控件的相关逻辑,只关心自己的数据处理逻辑

3.易于单元测试。

4.viewmodel可以抽离出来做转换器给其他项目使用,从而最大程度上实现了代码的复用。

MVVM设计模式的目的是帮助MVC设计模式中的Controller瘦身,将数据加工的任务从Controller中解放出来,使得Controller只需要专注于业务分配工作,让MVVM中的ViewModel负责Model与View之间的通信,并完成通信间的额外操作,如数据转换,字符拼接等操作。因此,ViewModel经常作为转换器使用,从而提高代码的复用性。ViewModel还能帮助Controller完成复杂的网络请求逻辑,从而大大降低了Controller的复杂度。这里需要注意的是,ViewModel具有独立性,它并不关心UI的业务逻辑,也不持有任何UI对象,只关心自己的数据处理逻辑是否正确。如果处理不当,ViewModel就会变得跟Controlller一样庞大,又或者是无法体现出ViewModel的独立性,提高代码可复用性。

有很多人认为MVVM设计模式能够减少总体的代码量,这种理解也是不全面的。事实上,MVVM设计模式在实际使用中,虽然能够将诸多非业务逻辑从Controller中抽离,减少了代码的复杂性,但是总体的代码量是不会减少的,甚至会有些许增加。

同时MVVM在有诸多好处的同时也带来了很多新的问题,例如:

1.MVVM将Model通过ViewModel与View绑定使得bug很难被调试。界面的异常又可以是UI绘制的问题,也有可能是Model的问题,这使得一个bug没法被快速定位到。

2.对于过于庞大的项目,数据绑定需要花费更多的内存。从某种意义上来说,数据绑定使得MVVM设计模式变得复杂和难用。

MVC和MVVM模式,并没有谁更优秀,各种模式都有各自适合的应用场景,需要根据具体的使用场景,选择合适的设计模式,即不能守旧 ,也不能盲目使用新技术,这样才能应对技术的变化。

MVVM模式中实现的数据绑定有以下两种较为常用的方式

1.使用KVO的绑定机制,在轻量级的开发中,它能很好的将OC与Cocoa结合起来,不需要借助第三方库进行数据绑定

2.使用ReactiveCocoa 作为绑定机制。ReactiveCocoa是函数响应编程在iOS中的一个实现框架,后面会详细记录用法。

相关文章

  • iOS 设计模式 一

    设计模式随记 系统架构模式 1. MVC - MVVM - MVP - MVVM、MVC协调版 MVC :...

  • MVVM 模式随记

    随着业务规模的扩大,业务逻辑变得越来越复杂。这样controller中的代码越来越多,传统的MVC架构以及很难满足...

  • 初识Vue

    1. MVVM模式 Vue采用MVVM(Model-View-ViewModel)模式实现,MVVM模式由MVC演...

  • Vue快速入门

    MVVM模式 什么是MVVM模式? MVVM(Model-View-ViewModel)是一种软件架构设计模式,由...

  • vue面试问题

    1.MVVM模式和MVC模式 MVVM模式是Model-View-ViewModel的缩写。MVVM是一种设计...

  • MVVM在前端(web)使用

    前端框架vue,MVVM模式 今天咱们不谈iOS,说说web(MVVM模式)。MVVM模式在前端开发应该还是挺多的...

  • MVVM模式架构设计

    环境 AndroidStudio 2.1 MVVM模式 MVVM模式:View,ViewModel,Model,三...

  • Vue之MVVM模式和第一个Vue程序

    一、MVVM模式和第一个Vue程序 目录:MVVM模式、第一个Vue程序 1.MVVM模式 1)什么是MVVM?M...

  • Android MVVM 入门教程

    1. MVVM 模式 架构理解 MVVM 模式,即指 Model-View-ViewModel。它将 View 的...

  • iOS MVVM架构总结

    参考:iOS 中MVC设计模式iOS MVVM架构iOS MVVM-框架介绍iOS 架构模式MVVM的实践总结iO...

网友评论

      本文标题:MVVM 模式随记

      本文链接:https://www.haomeiwen.com/subject/fiynqktx.html