什么是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就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。