博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVVM使用实践
阅读量:6360 次
发布时间:2019-06-23

本文共 925 字,大约阅读时间需要 3 分钟。

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

转载于:https://juejin.im/post/5b28c59bf265da59615bfe16

你可能感兴趣的文章
RHEL系列网络配置2015083101
查看>>
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
查看>>
雨巷-戴望舒
查看>>
OpenCms创建网站过程图解——献给OpenCms的初学者们
查看>>
C++ 异常处理机制的实现
查看>>
Freebsd的ports命令
查看>>
分布式系统---幂等性设计
查看>>
【转】时钟周期,机器周期,指令周期的区别
查看>>
MYSQL 更新时间自己主动同步与创建时间默认值共存问题
查看>>
android 屏幕适配
查看>>
Android Activity的4种启动模式
查看>>
leetcode第一刷_Minimum Depth of Binary Tree
查看>>
pm2-webshell —— 基于浏览器的终端控制台
查看>>
Mysql基准测试
查看>>
Session 撰改演示
查看>>
【转】python3 发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)
查看>>
事务隔离级别(图文详解)
查看>>
canvas系列教程08-canvas各种坑
查看>>
浅析package.json中的devdependencies 和 dependencies
查看>>
又一个 iOS 侧边栏组件: SideMenu
查看>>