参考《MVVM 在美团点评酒旅业务中的实践》学习基于RAC的MVVM实现,这个美团的技术分享还是不错的,就是只有片段代码没找到完整的实现工程。按照我自己的学习习惯,一定会自己看一遍,理解后在敲一遍代码;敲代码过程中发现美团的这个分享有几个点没有串接起来,只好翻看RAC的很多资料,终于把这个样例完整串接了起来。完整工程如下:
https://github.com/smallhorse87/RacBasedMVVMExample
论一个完整样例对于学习新技能入门的重要性
很多时候就是一个小点堵着,导致没办法继续往下学习;一个点堵住,就意味着不得不放弃。
对于RAC和MVVM的新认识
RAC可以非常方便的实现单向、双向绑(强调的是数据流动方向);综合绑定(强调对数据复合、过滤、策略判断)。比起自己写观察者更加简练、优雅。
示例中对于每个cell都有一个对应的view model;对比我自己之前的MVVM架构,拆分粒度更加细小。带来的好处就是复用的可能性更多。
view model相当于model和view之间的协调者,model指导view如何展示,以及响应来view的UI事件(命令)。这和我过去的认识有很大区别,扩大了view model的职责范围,且view model靠UI更加近。
view中只剩下了不变布局,可变的内容全部抽取到了view model中,非常符合开闭原则。带来的直接好处就是UI可以通用化。
美团分享里提到,MVVM化后自动化测试可以覆盖到更多代码。这个是当然的,因为很多view承担的轻逻辑被分解到view model中。
最后说下对RAC的理解,在RAC帮助下可以非常方便实现MVVM,但RAC的功能不只这一点。它实际是个响应式、函数式、链式编程的框架。博大精深,我还需要多研究。
对了,我已经用MVVM将影秀城的影秀卡支付模块重写了一遍。
网友评论