MVC模式基本理解

MVC、MVP和MVVM的开发模式的讲解以及事例举例 阅读详情

以下内容参考了《精通Java Web整合开发(JSP+Ajax+Struts+Hibernate)》和《自己动手写Struts——构建基于MVC的Web开发框架》里面的内容。


概述


MVC模式,即模型-视图-控制器(MVC,Model-View-Control)是一种交互界面的结构组织模型。

模型(Model),代表的是应用的业务逻辑,包含应用程序的核心功能,它表示企业数据和业务规则。模型封装了应用程序的状态。在MVC模式中,模型要处理的任务很多,为了能使一个模型能给多个视图提供数据,那么要让模型与数据格式无关。

视图(View),应用的视图层,提供模型的表示。它是应用程序的界面,是用户能看到并与之交互的界面。在视图层中,没有发生真正的处理。视图层只是展示由模型提供数据的一种方式,因此,视图只能访问模型的读方法,而不能访问模型的写方法。视图对控制器一无所知,当改变模型时,视图应得到通知。

控制器(Control),提供应用的处理过程控制,控制器对用户的输入做出反应,它创建并设置模型。控制器相当于一个中转站,它本身不处理和输出任何数据。控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后确定用哪个视图来显示模型处理返回的数据,从而把响应结果送回到客户端。



MVC模式的结构



用户提交的请求导致控制器改变模型或视图,或者同时改变模型或视图。一旦控制器改变了模型的数据,就会通知所有依赖的视图进行自动更新;从另一方面讲,只要控制器选择了相应的视图,视图就会从模型中获取数据来进行刷新。



MVC模式的设计思想


MVC模式的设计思想就是:把原来开发人员针对一个系统的输入、输出、处理流程编程的方式改变为按照模型层、视图层、控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了开发流程。

1、 模型层

模型就是业务流程、状态处理及业务规则的制定。模型一般有两类:业务逻辑模型和数据模型。模型接受视图请求的数据,并返回最终的处理结果。业务流程的处理过程对另外两个层(View和Control)来说是封闭的。在MVC模式中,我们要把应用模型按一定的规则抽取出来,抽取的层次是关键,这也是判断开发人员是否优秀的依据。数据模型主要指实体对象的数据保存,即持久化。数据模型实现了对视图和模型之间交互的支持。实现把“做什么(业务处理)”和“怎么做(业务实体)”分离,这样就可以实现业务逻辑的重用。业务模型的设计是MVC最主要的核心部分。

2、 视图层

视图就是客户和系统进行交互的界面,作为视图来讲,它只是展示由模型提供的数据的一种方式。它可以是一个HTML页面或者是其它的方式等等。

在MVC设计模式中,视图仅限于处理视图上数据的采集和处理,以及用户的请求,不包括视图上业务流程的处理,业务流程的处理和状态的改变交给模型层处理。

3、 控制层

控制层就像一个中转站,它接受用户请求,并根据用户请求将模型与视图匹配在一起,共同完成用户的请求。控制层不做任何的数据处理,它就是一个分发器,选择什么样的模型以及视图,就可以完成什么样的用户请求。为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。用户提交一个表单或者点击一个链接,控制层在接受请求后,它本身并不处理业务信息,而是根据用户的请求类型,把用户的信息传递给相对应的模型,告诉模型做什么,等模型处理完毕后,再把模型处理后的数据选择符合要求的视图返回给用户。这样,一个模型就可能对应多个视图,一个视图可能对应多个模型。这样的话,我们可能会在控制层进行一些简单的数据转换等操作。

模型、视图与控制器之间的分工协作关系如下:


关系图说明如下:

模块名称

分工

协作

模型M

1、抽象系统应用的功能

2、封装系统的状态

3、提供使用系统功能的方法和路径

4、管理数据的存储和一致性

5、当数据发生变化时通知相关组件

1、当系统状态改变时通知视图

2、响应视图的状态查询

3、提供对控制器的操作途径

视图V

1、抽象数据表示

2、表示针对用户的数据

3、维护与模型的数据一致性

1、显示模型的数据

2、接收模型的数据更新通知更新视图

3、接受用户输入的数据传给控制器

控制C

1、抽象用户和系统的时间的语意映射

2、把用户输入映射到系统事件

3、根据用户输入和上下文情况选择合适的显示数据

1、接收用户请求

2、调用某个模型处理用户请求

3、 将处理结果送给某个视图进行显示

 

总结MVC的处理过程如下:

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型的数据,并通过视图层展示给用户。



基于MVC的Web框架


一般情况下,实现一个基于MVC的Web框架示意图如下:


游戏开发实战:用UE4 Marschner模型打造次世代头发渲染(附Shader代码解析) 本文详细解析了如何在UE4中使用Marschner模型实现次世代头发渲染,包括Shader代码逐行解读与参数调优。通过对比传统Kajiya-Kay模型,展示了Marschner模型在物理精确性和视觉效果上的优势,并提供了性能优化与实战技巧,帮助技术美术师提升游戏角色渲染品质。 阅读详情

相关推荐

双模音频解码器设计:USB+蓝牙LDAC平衡输出方案

音频解码器是数字音频系统中实现数模转换的核心组件,其性能直接决定音质保真度与系统延迟。基于高集成SoC的解码方案通过统一时钟域与片内DSP处理,有效抑制Jitter并简化硬件拓扑;结合全平衡模拟输出架构,可显著提升共模抑制比(CMRR)与信噪比(SNR)。该技术路径广泛应用于便携式Hi-Res音频设备、USB-C小尾巴DAC及蓝牙高解析耳机放大器等场景。本文围绕ES9038Q2M双模SoC展开,详解其在LDAC协议支持、UAC2.0兼容性及平衡电流型DAC输出方面的工程实现,为高性能、可量产音频硬件开发提供

weixin_42613018的博客 388

MVC设计模式

对于开发人员来说,学习和掌握MVC模式是非常重要的,它可以提高开发效率和质量,使得构建复杂的应用程序变得更加容易。它为应用程序提供了一种结构化的方法,将数据、用户界面和业务逻辑分开,从而使得应用程序更易于维护、扩展和重用。解耦:MVC模式将应用程序的不同部分(数据、用户界面和业务逻辑)分离,降低了它们之间的耦合度。视图(View):视图是应用程序的用户界面。可扩展性:由于MVC模式将应用程序的不同部分分离,因此当应用程序需要扩展时,可以更容易地添加新的功能或模块,而不会对现有的代码造成太大的影响。

weixin_43735634的博客 5206

告别迷茫!手把手教你用Synopsys VC USB VIP搭建验证平台(附UVM分层序列实战解析)

本文详细介绍了如何使用Synopsys VC USB VIP搭建验证平台,并深入解析UVM分层序列的实战应用。通过Step-by-Step的操作指南和关键配置示例,帮助验证工程师高效集成USB VIP,掌握从环境搭建到测试用例开发的全套技能,特别适合处理复杂协议验证的挑战。

weixin_42520573的博客 552

flask mvc模式开发_MVC设计模式

MVC的全名是Model View Controller,是模型(Model)-视图(view)-控制器(controller)的缩写,是一种设计模式。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间,提高代码复用性。使用的MVC的目的:它将这些对象、显示、控制分离以提...

weixin_39850167的博客 1758

机器人导航学习历程(四)local planner

local planner   我们先来回顾一下Navigation的框架,可以看出位于红框中的local_planner是move_base节点的一部分,输入包括来自global_planner的全局的规划路径、里程计信息以及local_costmap的信息,输出是速度控制指令,作为控制器的输入。 base_local_planner   局部规划一般是用base_local_planner包...

yuniruchujian的博客 4410

五、实战pxe安装ubuntu 22.04 软raid1(实际生产pxe配置)

这段配置文件是一个cloud-init的自动安装配置,用于自动化部署Ubuntu服务器操作系统。它定义了从系统身份、键盘布局、区域设置到磁盘分区和RAID配置的一系列设置,并且包含了在安装过程的最后阶段执行的一些命令。基础设置version: 1指定了autoinstall配置文件的版本。source定义了安装源,这里是ubuntu-server。identity设置了主机名(hostname)、用户(username)和密码(password注意这里的密码是经过加密的。键盘与语言设置。

jundao1997的专栏 999

MVC思想概述

一、MVC思想概述     MVC思想最早是由Trygve M.H.Reenskau提出,他是挪威的计算机专家,MVC是他在1979年访问施乐帕克研究中心期间提出的一种主要针对GUI应用的软件架构模式。     MVC思想体现了“关注点分离”这一基本方针,它将一个人机交互的应用涉及的功能分为Model、Controller、View三部分,他们各自的职责如下。 Model是对应用状态和业务...

高级项目经理、专注于技术架构、分享项目管理及职场心得 6249

东方财富个股实时行情爬虫实战:从入门到精通,手把手教你构建股票数据采集系统

在量化投资、股市分析和数据挖掘等领域,获取实时、准确的股票行情数据是第一步也是至关重要的一步。东方财富网作为国内最大的财经门户网站之一,提供了丰富的股票数据和实时行情接口。本文将带你从零开始,构建一个完整的东方财富个股实时行情爬虫系统,涵盖股票代码遍历、JSON接口分析、反爬虫策略应对、数据持久化存储等核心技术点。目录前言一、项目背景与目标1.1 为什么要爬取东方财富数据?1.2 项目目标1.3 技术栈二、接口分析与逆向工程2.1 寻找真实数据接口2.2 简化接口2.3 字段含义对照表三、股票代码获取。

2201_76125261的博客 144

MVC模式简介

MVC模式一.MVC是什么二.优缺点2.1 MVC模式的优点2.1.1 低耦合2.1.2 重用性高2.1.3 生命周期成本低2.1.4 部署快2.1.5 可维护性高2.1.6 有利软件工程化管理2.2 MVC模式的缺点2.2.1 没有明确的定义2.2.2 不适合小、中型应用程序2.2.3 增加系统结构和实现的复杂性2.2.4 视图对模型数据的低效率访问 一.MVC是什么 MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)

weixin_45808737的博客 1万+

EtherCAT ROS2 入门教程(一)

本文介绍了EtherCAT驱动与ROS2的集成方案,主要包括三部分内容:1)在Ubuntu 22.04上安装IgH EtherCAT主站的详细步骤,包括内核配置、源码编译和网络适配器设置;2)构建ethercat_driver_ros2,通过ros2_control描述文件配置硬件接口和EtherCAT从站模块插件;3)使用方法,包括启动EtherCAT主站和运行配置包。该方案支持通过参数文件定义硬件接口,并提供通用和专用两种EtherCAT模块插件,便于开发基于EtherCAT的工业应用。

机器人控制与仿真应用 1528

Hermes接入IMA知识库全攻略:将知识库装进你的Hermes智能体

本文详细介绍了如何将IMA知识库功能接入Hermes Agent平台,实现一站式笔记管理和知识库操作。主要内容包括:获取IMA访问凭证、下载技能包、配置凭据(支持文件和环境变量两种方式)、验证配置有效性,以及实际应用演示(查询知识库列表、创建笔记并添加到知识库)。文章还提供了常见问题解决方案,如认证失败处理、版本更新等。通过该集成,用户可在Hermes中直接调用IMA的笔记创建、知识库管理等强大功能,提升工作效率。

小石头的专栏 641

MVC使用的设计模式

Observer (观察者模式)Composite(组合模式)和Strategy(策略模式)。所以说MVC模式又称复合模式。MVC(Model-View-Controller) 模式的基本思想是数据,显示和处理相分离。模型(Model)负责数据管理,视图(View)负责数据显示,控制器(Controller)负责业务逻辑和响应策略。模型、视图、控制器各个部分的作用模型(Model):负责封装并实现应用的具体功能。通常又分为业务逻辑层(用来为视图层和数据持久层准备数据和并处理从。

kalvin_y_liu的博客 2986

华为昇腾开发——多模型资源管理(C++)

在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。

如果想成为中心,那么就到中心去吧。 575

java EE开发之Servlet第八课:MVC模式 (基本理解)

(7)在Struts2Filter的服务方法中得到业务员对象后,调用业务员execute方法,开始工作,并接收业务员返回的结果页面的jsp文件名,在Struts2Filter的服务方法中接收到业务员返回的结果页面jsp名字后后,将页面转发或者是重定向到结果页面去。#####6,因为方法的返回类型是 String对象,这个字符串代表的就是最终跳转的和页面,但是有一个问题,就是跳转的方式有重定向和转发这里,我们不做判断,默认就用转发。如控制层可独立成一个能用的组件, 视图层也可做成通用的操作界面。

Meryoufdd的博客 292

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Spring MVC】MVC设计模式的Java Web框架

Spring MVC 是 Spring 框架中的一个模块,基于 Model-View-Controller (MVC) 设计模式,用于构建灵活和可扩展的 Java Web 应用程序。它通过前端控制器 DispatcherServlet 处理所有请求,并将请求分发给对应的控制器,负责业务逻辑处理,再将结果传递给视图进行渲染,简化了开发过程并实现了应用程序的高效组织和维护。​

科马的博客 3383

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ThinkPHP中的MVC开发模式理解一

MVC这三个字母不愧博大精深,当我自以为要马上攻破php最后一道难关的时候,那时候的我好想就想错了,当我研究了一个半月之后,竟然发现其思想是那么的难以理解,直到现在我也不得不承认我只是对这个思想的认识只是一个皮毛,对于很底层的东西还是不太理解,还有别的要说的,但先说一下我对MVC的理解: 其实MVC并不是一个什么语法或者算法,只是一个开发模式,说道开发模式,我所知道的有传统的MODEL模式,即过

MyCodeDream的专栏 3575

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深入理解MVC模式

一,什么是MVC模式 该模式是一种软件设计典范,他把软件系统划分为三个基本部分:模型层(Model)、视图层(View)、控制器(Controller) *Model(模型)表示应用程序核心(比如数据库记录列表) *View(视图)显示数据(数据库记录) *Controller(控制器)处理输入(写入数据库记录) Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通...

weixin_30436891的博客 109

浅谈MVC设计模式

    最近在整理自己所写的项目时,其中有一个项目利用了MVC设计模式,当时做项目的时候只是简单会使用这个设计模式。今天突然想研究研究它,所以结合网上的一些资料,将MVC设计模式做一个简单的总结概括。    MVC设计模式最大的特点:        可以实现模型的复用:一方面,模型只返回处理结果,并不用关心这些结果如何展现。我们可以提供不同的视图来展现这些        数据;另外一方面,对于同一...

柯南的博客 3835

iOS for MVC模式

MVC逻辑示意图 我们接下来通过MVC模式要实现的界面: 文件夹结构: 自定义视图AppView.xib示意图: 控制层: "ViewController.h" // // ViewController.m // // Created by Long. // Copyright © 2016年 LongChuan

Zok93 598

《php面向对象》第26课:MVC框架的基本结构

上节课我们提到,现成的MVC框架有很多,最具有代表性的有thinkphp,YII ,为什么开要自己开发一个呢? 一个成熟的MVC框架需要10人以上的团队至少开发一年以上,我们开发的MVC框架只能是mini型。这样做的目的: 深入学习面向对象编程和MVC设计模式 下面我们设计一个最简单的MVC结构,用实际代码来表示模型、视图、控制器三者之间的关系 。 我们创建了四个php文件: 外层目...

李书明(石家庄)的专栏 460

ASP.NET MVC 理解MVC模式

PS:MVC出来很久了,工作上一直没机会用,所以我也没去学。出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正。 理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理

萌萌的It人 www.itmmd.com 1537

谈谈JavaEE的mvc模式及典型的三层架构

首先,向读者介绍一下mvc架构,mvc是一种源于桌面程序的架构模式,它的基本思想是把程序界面和业务逻辑分开,这样便于软件的后期维护,同时也方便开发时期分工及管理,mvc有很多有点所以现在已经被广泛的应用与web开发中。(JavaEE架构交流群:群91494917)     下面介绍一下自己了解mvc架构的经历,和其中的一些误区,以便于读者可以更好的理解什么是mvc;我第一次接触mvc是在学习ph

程序员博客 1万+

MVC模式解读

MVC 模式结构 MVC 模式将应用分为模型、视图和控制器三个部分: 1. 视图:数据的展现(V)。 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。 2. 模型:应用对象(M)。 模型是应用程序的主体部分。

weboof的博客 454

JSP使用Servlet作为控制器实现MVC模式实例详解[转]

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ...

ruankun521的博客 717

[ASP.NET MVC 小牛之路]01 - 理解MVC模式

理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。视图(View)

linybo的专栏 651
上一篇: ExtJS 2使用经验(树、表格树、RadioGroup)
下一篇: spring3.1.x源码编译并导入eclipse
HingKwan
博客等级 码龄17年 51粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值