mvc、mvp、mvvm的区别

231 阅读1分钟

一、mvc

流程图如下:

img

缺点:

  • C层单向调用M层和V层,大部分逻辑都集中在C层,代码量也集中在C层,这带给C层很大压力;
  • V层和M层分离,数据感应依靠监听M层,这样V层就无法复用。

二、mvp

为了解决上面的问题,出现了mvp。

优点:

  • V层不需要再依靠监听M层感知数据变化,而是通过P层提供的接口,P层再去访问M层,这样V层就可以抽离出来做组件。

缺点:

  • P层双向调用M层和V层,所有数据都需要Presenter层进行“手动同步“,代码量较大。

img

三、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层的数据,反之同理。

img