一、mvc
流程图如下:
缺点:
- C层单向调用M层和V层,大部分逻辑都集中在C层,代码量也集中在C层,这带给C层很大压力;
- V层和M层分离,数据感应依靠监听M层,这样V层就无法复用。
二、mvp
为了解决上面的问题,出现了mvp。
优点:
- V层不需要再依靠监听M层感知数据变化,而是通过P层提供的接口,P层再去访问M层,这样V层就可以抽离出来做组件。
缺点:
- P层双向调用M层和V层,所有数据都需要Presenter层进行“手动同步“,代码量较大。
三、mvvm
为了让V层和M层的数据始终保持一致,出现了mvvm。
当Model中的数据发生改变时View就感知到,当View中的数据发生变化时Model也能感知到,是MVVM模式的核心。ViewModel 层把 Model 层和 View 层的数据同步自动化了,解决了 MVP 框架中数据同步比较麻烦的问题,不仅减轻了 ViewModel 层的压力,同时使得数据处理更加方便。
mvvm模式和mvp模式很像,都是P层双向调用M层和V层。关键问题就在于VM层的内容,P层是采用手动写方法来调用或修改V层和M层;而VM层双向绑定了V层和M层,因此,随着V层的数据变化,系统会自动修改M层的数据,反之同理。