美文网首页
MVVM使用实践

MVVM使用实践

作者: 苏大盒子 | 来源:发表于2016-04-26 15:58 被阅读504次

    因为https://blog.csdn.net/urdfmqcul2/article/details/78788962
    ,博客搬家至https://juejin.im/user/59fd6315f265da4321536990

    这篇博文是针对目前公司所在的团队使用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;

    相关文章

      网友评论

          本文标题:MVVM使用实践

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