欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MVC与MVVM的理解

程序员文章站 2024-02-26 13:36:28
...

MVC 与 MVVM的理解

一、MVC

1、什么是MVC

​ MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是最常见的软件架构之一,业界有着广泛应用。一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

​ MVC模式可以分为三部分:
MVC与MVVM的理解

  • Model(模型)表示应用程序核心(如数据库)。

  • View(视图)显示效果(HTML页面)。

  • Controller(控制器)处理输入(业务逻辑)。

    MVC模式的通信方式:是单向通信的
    MVC与MVVM的理解

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

**Model(模型)**是应用程序中用于处理应用程序数据逻辑的部分,模型接收视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
**View(视图)**是应用程序中处理用户交互的部分,对于web来说可以包括html界面,但有可能是xhtml,xml和Applet,mvc设计模式视图的处理仅限于视图上数据的采集和处理,以及用户的请求,不包括业务处理。
**Controller(控制器)**是应用程序中处理数据显示的部分。可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。
1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。
这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

MVC 的优缺点

优点

1、低耦合
视图层与业务层的分离,在改变视图层代码时不用重新编译模型和控制代码。同样的,一个应用层的业务流程或者业务规则的改只需要改MVC的模型层即可。
2、重用性高
MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型。
3、部署快,生命周期成本低
MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上
4、可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

缺点

1、完全理解MVC比较复杂
2、调试困难
因为模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难,每个构件在使用之前都需要经过彻底的测试
3、不适合小型,中等规模的应用程序
在一个中小型的应用程序中,强制性的使用MVC进行开发,往往会花费大量时间,并且不能体现MVC的优势,同时会使开发变得繁琐。
4、增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
5、视图与控制器间的过于紧密连接并且降低了视图对模型数据的访问
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

二、MVVM框架

什么是MVVM

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

MVVM模式的组成部分

1、模型
是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。
2、视图
就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。
3、视图模型
视图模型是暴露公共属性和命令的视图的抽象。
4、绑定器
声明性数据和命令绑定隐含在MVVM模式中。

MVVM的优缺点

1.、低耦合
视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
2、可重用性
你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
3. 独立开发
开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
4. 可测试
界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

相关标签: javascript