MCV与MVVM的区别

什么是MVC

官方解释:

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

通俗点来讲,model就是我们从数据库存取的数据,view是我们能看到的页面展示,如果要把我们想要的数据以某种形式展示在页面上,没有controller之前,把处理数据的逻辑都写在model里,这样不仅代码难以复用,而且model里代码就会显得很臃肿,所以controller的出现主要是从model中分离出数据处理的逻辑代码,简化model的操作。这样就形成了一个单向的数据流,用户对View的操作交给了Controller处理,在Controller中响应View的事件调用Model的接口对数据进行操作。 View与Model的数据交换只能通过Controller来承上启下。

MVC的优缺点

优点:

  • 耦合性低,视图模型控制器三者相互分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码。
  • 重用性高,多个视图能共享一个模型
  • 可维护性高,分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
  • 前后端可以分工作业,提升开发效率

缺点:

  • 不适合小型应用程序
  • 增加系统结构和实现的复杂性
  • 控制层和表现层有时会过于紧密,导致没有真正分离和重用
什么是MVVM

MVVM是Model-View-ViewModel的简写。
它本质上就是MVC的改进版。Model指的是后端传递的数据。View指的是所看到的页面。ViewModel是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。

MVVM模式在概念上是真正将页面与数据逻辑分离的模式。

MVVM与MVC最大的区别在于 它实现了View和Model的自动同步,通过ViewModel来实现双方的通讯。当数据变化的时候,Viewmodel能够监听到这种变化,并及时的通知view做出修改。同样的,当页面有事件触发时,Viewmodel也能够监听到事件,并通知model进行响应。Viewmodel就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。

原文地址:https://www.cnblogs.com/ljygirl/p/13553531.html