MVVM使用实践

这篇博文是针对目前公司所在的团队使用MVVM(具体可以看limboy的博文)的一个问题总结和建议规范,记录在此以作备份。 首先再把这张图拿出来看看:

总结来说,团队在使用MVVM模式的过程当中普遍存在的问题:

什么时候需要建立ViewModel?

ViewModel能否复用?

应该放一些什么样的代码在ViewModel中?

如何优雅地绑定V和VM?

-----------分割线---------------

什么时候需要建立ViewModel?

已经在实践的: 1.ViewController-ViewModel 2.TableViewCell/CollectionViewCell-ViewModel 可扩展的: 任何展示业务逻辑复杂的View,均可以建立其对应的ViewModel(建议在该View需要响应用户事件来改变model时使用),简单的情况下可以通过在头文件暴露subView的readonly指针,由持有ViewModel的View来修改subView的显示;

ViewModel能否复用?

一般情况不建议复用,ViewModel和V(VC)是一个一一对应的关系,ViewModel的复用一般情况下就意味着一个逻辑复杂的View(VC)的复用,这类情况在一般的产品中比较少见,如果强行复用VC带来的问题远比提升的效率要多。

应该放一些什么样的代码在ViewModel中?

很简单,任何对Model的操作都可以移至ViewModel,比如说:获取(网络请求/读数据库/读文件)、存储(远端存储/本地存储)等; View(VC)在任何时候拿到的Model,都建议从ViewModel中去获取,换句话说,ViewModel是UI数据的来源,数据应该保存在ViewModel中,然后和UI绑定。

如何优雅地绑定V和VM?

目前的绑定关系没有问题,但是需要一个建议规范,View不再直接持有任何Model,而是通过监听ViewModel的result,在任何时候result发生变化,只需要取出ViewModel中的Model,更新UI;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值