首页IT科技mvc架构类图(三种架构模式——MVC、MVP、MVVM)

mvc架构类图(三种架构模式——MVC、MVP、MVVM)

时间2025-09-19 01:06:35分类IT科技浏览6433
导读:目录...

目录

前言

一                   、MVC(Model-View-Controller)

1                            、简介

2         、框架图

二                   、MVP(Model-View-Presenter)

1                             、简介

2         、框架图

三         、MVVM(Model-View-ViewModel)

1                             、简介

2                   、框架图

四         、总结

前言

MV系列框架中                   ,M和V分别指Model层和View层                            ,但其功能会因为框架的不同而变化                   。Model层是数据模型         ,用来存储数据;View层是视图          ,展示Model层的数据                            。

虽然在不同的框架中                            ,Model层和View层的内容可能会有所差别                   ,但是其基础功能不变          ,变的只是 数据的传输方式          。

一                            、MVCModel-View-Controller

1                   、简介

MVC是模型-视图-控制器                            ,它是MVC、MVP                            、MVVM这三者中最早产生的框架                   ,其他两个框架是以它为基础发展而来的          。

MVC的目的就是将M和V的代码分离,且MVC是单向通信                            ,必须通过Controller来承上启下                            。

Model:模型层                            ,数据模型及其业务逻辑,是针对业务模型建立的数据结构                   ,Model与View无关                            ,而与业务有关                   。

View:视图层         ,用于与用户实现交互的页面                   ,通常实现数据的输入和输出功能          。

Controller:控制器                            ,用于连接Model层和View层         ,完成Model层和View层的交互                            。还可以处理页面业务逻辑          ,它接收并处理来自用户的请求                            ,并将Model返回给用户                   。

2                            、框架图

MVC框架图如图1.1示。

图1.1  MVC框架图

上图可以看出各部分之间的通信是单向的                   ,呈三角形状                            。

具体MVC框架流程图如图1.2所示                            。

图1.2  MVC框架流程图

从上图可以看出          ,Controller层触发View层时                            ,并不会更新View层中的数据                   ,View层的数据是通过监听Model层数据变化自动更新的,与Controller层无关。换言之                            ,Controller存在的目的是确保M和V的同步                            ,一旦M改变,V应该同步更新                   。

同时                   ,我们可以看到                            ,MVC框架大部分逻辑都集中在Controller层         ,代码量也集中在Controller层                   ,这带给Controller层很大压力                            ,而已经有独立处理事件能力的View层却没有用到;而且         ,Controller层与View层之间是一一对应的          ,断绝了View层复用的可能                            ,因而产生了很多冗余代码                            。

为了解决上述问题                   ,MVP框架被提出         。

二、MVPModel-View-Presenter

1                   、简介

MVP是模型-视图-表示器          ,它比MVC框架大概晚出现20年                            ,是从MVC模式演变而来的                   。它们的基本思想有相同之处:Model层提供数据                   ,View层负责视图显示,Controller/Presenter层负责逻辑的处理                            。将Controller改名为Presenter的同时改变了通信方向         。

Model:模型层                            ,用于数据存储以及业务逻辑          。

View:视图层                            ,用于展示与用户实现交互的页面,通常实现数据的输入和输出功能                            。

Presenter:表示器                   ,用于连接M层                            、V层                            ,完成Model层与View层的交互         ,还可以进行业务逻辑的处理                   。

2         、框架图

MVP框架图如图2.1示          。

图2.1  MVP框架图

上图可以看出各部分之间的通信是双向的                            。

在MVC框架中                   ,View层可以通过访问Model层来更新                            ,但在MVP框架中         ,View层不能再直接访问Model层          ,必须通过Presenter层提供的接口                            ,然后Presenter层再去访问Model层                   。

具体MVP框架流程图如图2.2所示。

图2.2  MVP框架流程图

从上图可以看出                   ,View层和Model层互不干涉          ,View层也自由了很多                            ,所以View层可以抽离出来做成组件                   ,在复用性上就比MVC框架好很多                            。

但是,由于View层和Model层都需要经过Presenter层                            ,导致Presenter层比较复杂                            ,维护起来也会有一定的问题;而且,因为没有绑定数据                   ,所有数据都需要Presenter层进行“手动同步                   ”                            ,代码量较大         ,虽然比起MVC框架好很多                   ,但还是有比较多冗余部分                            。

为了让View层和Model层的数据始终保持一致                            ,MVVM框架出现了。

三                   、MVVMModel-View-ViewModel

1                             、简介

MVVM是模型-视图-视图模型                   。MVVM与MVP框架区别在于:MVVM采用双向绑定:View的变动         ,自动反映在ViewModel          ,反之亦然                            。

Model:数据模型(数据处理业务)                            ,指的是后端传递的数据         。

View:视图                   ,将Model的数据以某种方式展示出来                   。

ViewModel:视图模型          ,数据的双向绑定(当Model中的数据发生改变时View就感知到                            ,当View中的数据发生变化时Model也能感知到)                   ,是MVVM模式的核心                            。ViewModel 层把 Model 层和 View 层的数据同步自动化了,解决了 MVP 框架中数据同步比较麻烦的问题                            ,不仅减轻了 ViewModel 层的压力                            ,同时使得数据处理更加方便——只需告诉 View 层展示的数据是 Model 层中的哪一部分即可         。

2         、框架图

MVVM框架图如图3.1示          。

图3.1  MVVM框架图

上图可以看出各部分之间的通信是双向的,而且我们可以看出                   ,MVVM框架图和MVP框架图很相似                            ,两者都是从View层开始触发用户的操作         ,之后经过第三层                   ,最后到达Model层                            。而关键问题就在于这第三层的内容                            ,Presenter层是采用手动写方法来调用或修改View层和Model层;而ViewModel层双向绑定了View层和Model层         ,因此          ,随着View层的数据变化                            ,系统会自动修改Model层的数据                   ,反之同理                   。

具体MVVM框架流程图如图3.2所示          。

图3.2  MVVM框架流程图

从上图可以看出          ,View层和Model层之间的数据传递经过了ViewModel层                            ,ViewModel层并没有对其进行“手动绑定                            ”                   ,不仅使速度有了一定的提高,代码量也减少很多                            ,相比于MVC框架和MVP框架                            ,MVVM框架有了长足的进步                            。

从3.1框架图可以看出,MVVM框架有大致两个方向:

1         、模型-->视图     ——实现方式:数据绑定

2                             、视图-->模型     ——实现方式:DOM事件监听

存在两个方向都实现的情况                   ,叫做数据的双向绑定                   。双向数据绑定可以说是一个模板引擎                            ,它会根据数据的变化实时渲染。如图3.3所示         ,View层和Model层之间的修改都会同步到对方                            。

图3.3  数据的双向绑定

MVVM模型中数据绑定方法一般有三种:

数据劫持 发布-订阅模式 脏值检查

补充:Vue.js使用的就是数据劫持和发布-订阅模式两种方法                            。了解Vue.js数据绑定流程前                   ,我们需要了解这三个概念:

Observer:数据监听器                            ,用于监听数据变化         ,如果数据发生改变          ,不论是在View层还是在Model层                            ,Observer都会知道                   ,然后告诉Watcher。 Compiler:指定解析器          ,用于对数据进行解析                            ,之后绑定指定的事件                   ,在这里主要用于更新视图                   。 Watcher:订阅者                            。

接下来看看Vue.js数据绑定的流程:首先将需要绑定的数据劫持方法找出来,之后用Observer监听这堆数据                            ,如果数据发生变化                            ,Observer就会告诉Watcher,然后Watcher会决定让那个Compiler去做出相应的操作                   ,这样就完成了数据的双向绑定         。

四                   、总结

从MVC到MVP再到MVVM                            ,这是一个不断进步的过程         ,后两者都是在MVC基础上发展而来                   ,使用起来更加方便                   。这三者主要的区别在于除Model层和View层之外的第三层的不同                            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
图书管理系统html页面(【HTML】原生js实现的图书馆管理系统) 伪原创文章什么意思(如何正确使用伪原创文章提升网站SEO排名)