iOS中的MVVM设计模式

经过这几天的翻阅资料与代码的实现,终于对MVVM设计模式有了明确的了解,分享给大家

一、什么是MVVM设计模式?

    MVVM来源于微软。是一种代码的分层方式,更是一种思想。MVVM 基本上就是 MVC 的改进版。

二、如何正确的使用MVVM设计模式?

    结构:在创建目录的时候一样,每一层放在一个单独的文件夹,M->Model,V->View,VM->View Model。

在使用的时候每个View/Controller持有一个ViewModel,ViewModel负责处理Model。顺序就是这个样子。

    做法:在ViewModel里首先实例成一个单例,这样做可以每次创建后使用返回的都是同一个对象。在VM中适合做一些复杂的网络请求,逻辑处理,验证等。例如给view 提供一个经过处理后的token,这样还可以把重要数据保存到本地。在网络数据处理阶段,ViewModel负责处理网络请求,把请求到的数据通过block(swift称闭包)返回给View层。同时,VM中的block也要做一些判断,返回给view也有error的情况。

    功能扩展:MVVM方便于数据绑定,如果Model的数据发生变化有变化View也可以随之更新。具体实现方式是使用KVO或通知。

三、使用MVVM设计模式的好处?

     在MVC中,C(controller控制器)所作的事情过多,负责网络处理,协调V和M,导致控制器所作的事情特别的多,代码上也显得格外的臃肿。MVVM上可以解决这一压力问题。

     在过去我们一直使用的MVC设计模式,功能上都实用又好用为什么又使用了MVVM了呢?我们可以这样讲,在什么样的开发条件下使用什么样的设计模式,如果只写一个hello world,如果硬要写个MVC就显得大材小用了。首先我们应该明确MVVM的设计模式好处在于什么,适合在哪种环境下使用。

    使用MVVM的实际模便于结耦,提高代码质量。更加高效的提升代码重用性。若产品布局页面发生改变直接修改View层。若请求认证方式或逻辑方式发生改变直接修改ViewModel层就可以。

    MVVM适合用于网络处理一些业务逻辑特别强的情况下使用

    MVC的优势是在于一些界面比较多复杂的情况下使用会更好

四、与MVC对比

    MVC是控制器负责网络处理,协调View和Model。在Controller中,首先先负责加载控件,然后进行网络请求。控制器把请求到的数据传递给view,误区:View不能直接和Model交互,是通过Controller进行传递进行的。否则MVC的意义就不存在了。Controller和View就不存在什么区别了。MVVM是MVC的升级版,MVVM兼容MVC


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值