MVC与MVVM与MVP

MVC

MVC就是model view contrloler,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示
MVC与MVVM与MVP

  • view 接受用户交互请求
  • view 把请求转给controller处理
  • controller操作model进行数据更新保护
  • 数据更新保护之后,model会通知view更新
  • view更新变化数据用户得到反馈

缺点:把业务逻辑和展示逻辑分离,模块化程度高。但由于View是强依赖特定的
Model的,所以View无法组件化,无法复用

MVVM

mvvm即model-View-view-viewmodel,将其中的view的状态和行为抽象化,让我们可以将UI和业务逻辑分开,mvvm的优点就是低耦合性、可重用性、独立开发。
MVC与MVVM与MVP

  • view接受用户交互请求
  • view将请求转交给viewmodel
  • viewmodel操作吗model数据更新
  • model更新完数据后,通知viewmodel数据变化
  • viewmodel更新view数据

解决了MVP大量的手动View和Model同步的问题,提供双向绑定机制。提高
了代码的可维护性。对于大型的图形应用程序,视图状态较多,ViewModel
的构建和维护的成本都会比较高。

mvvm模式和mvc有些类似 但有一下不同

  • viewmodel替换了controller,在UI层之下
  • viewmodel向view暴露它所需要的数据和指令对象
  • viewmodel接收来自model的数据

响应原理

vue采用数据劫持结合发布者-订阅者模式的方式 ,通过Object.defineProperty劫持data属性的setter ,getter 在数据变动时发布消息给订阅者,触发相应的监听回调

MVP

和MVC模式一样,用户对View的操作都会从View交移给Presenter。
Presenter会执行相应的应用程序逻辑,并且对Model进行相应的操作;而这
时候Model执行完业务逻辑以后,也是通过观察者模式把自己变更的消息传
递出去,但是是传给Presenter而不是View。Presenter获取到Model变更的
消息以后,通过View提供的接口更新界面。
MVC与MVVM与MVP
缺点:View不依赖Model,View可以进行组件化。但Model->View的手动同步逻
辑 麻烦,维护困难