Skip to content

Latest commit

 

History

History
18 lines (9 loc) · 1.16 KB

MVVM.md

File metadata and controls

18 lines (9 loc) · 1.16 KB

MVVM

传统的MVC分为:Model、View、Controller。MVVM模式多了一个ViewModel,作用就是为Controller减轻负担,将弱业务逻辑转到ViewModel中。MVVM的使用当中,通常还会利用双向绑定技术,使得Model变化时,ViewModel会自动更新,而ViewModel变化时,View也会自动变化。

对于复杂的页面,MVVM最大的优势在于职责分明,能够很大程度上降低VC的压力,而且ViewModel因为抛弃了页面之间的跳转逻辑,复用起来也非常方便,单测也比较容易写,而且通常MVVM的代码风格可以保持高度一致。

但使用数据绑定使得Bug很难被调试,你看到界面异常,有可能是View的代码有问题,也有可能是Model的代码有问题。

对于过大的项目,数据绑定需要花费更多的内存。

通常实现绑定器和调度协调器,需要引入RxSwift等框架,加大了项目的额外负担。

不过也可能是我没使用过MVVM来开发项目,形成统一规范。所以才没能感受到MVVM框架的魅力吧。