MVC设计模式含义和优点

article/2025/8/23 14:26:06
         MVC模式(Model-View-Controller)是 软件工程 中的一种 软件架构 模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

         MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

  • (控制器Controller)- 负责转发请求,对请求进行处理。
  • (视图View) - 界面设计人员进行图形界面设计。
  • (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

ModelViewControllerDiagramZh.png

视图:

在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器:
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

 

MVC的优点
1.低耦合性

  视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
  随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
  MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
  使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
  分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
  由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

 

扩展:

WAP(Wireless Application Protocol)为无线应用协议,是一项全球性的网络通信协议。WAP使移动Internet 有了一个通行的标准,其目标是将Internet的丰富信息及先进的业务引入到移动电话等无线终端之中。WAP定义可通用的平台,把目前Internet网上HTML语言的信息转换成用WML(Wireless Markup Language)描述的信息,显示在移动电话的显示屏上。WAP只要求移动电话和WAP代理服务器的支持,而不要求现有的移动通信网络协议做任何的改动,因而可以广泛地应用于GSM、CDMA、TDMA、3G等多种网络。   随着移动上网成为Internet时代新的宠儿,出现了WAP的各种应用需求。

一些手持设备,如掌上电脑,安装微型浏览器后,借助WAP接入Internet。 微型浏览器文件很小,可较好的解决手持设备内存小和无线网络带宽不宽的限制。 虽然WAP能支持HTHL和XML,但WML才是专门为小屏幕和无键盘手持设备 服务的语言。WAP也支持WMLScript。这种脚本语言类似与JavaScript,但对内存和CPU的要求更低,因为它基本上没有其他脚本语言所包含的无用功能。

 

转载自:http://blog.csdn.net/feibuhui123/article/details/10253355



http://chatgpt.dhexx.cn/article/IZ3fMS2i.shtml

相关文章

什么是MVC设计模式

直接上图,其中model 和view大家经常写,就不说了 有人可能并不清楚controller 到底是啥,其实就是经常写的 data source ,delegate,outlet什么的 先撇开那些乱七八糟的箭头单看他们之间的分界线,view与controller、model与controll…

MVC设计模式详解

MVC(Model View Controller)模型(model)-视图(view)-控制器(controller): MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC是将M和V的实现代码分离,从而使同…

MVC 设计模式概述

(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53292312) 1、MVC设计模式: 如图所示,MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型 (Model)、视图(View)和控制器(Contr…

mvc设计模式与三层架构

mvc与三层架构 1.什么是mvc设计模式 写 Java Web 项⽬时会发现,一个中型或者大型项目随着代码的增多,会发现:代码既可以写在 src目 录下,也可以写在WebContent目 录下。 src 下可以建很多包, WebContent 下可以建很多…

随机游走模型

6.2.1 随机游走模型(Random Surfer Model) 《这就是搜索引擎:核心技术详解》第6章链接分析,本章主要介绍一些著名的链接分析方法。本节为大家介绍随机游走模型(Random Surfer Model)。 6.2 两个概念模型及算…

图嵌入表示学习—Node Embeddings随机游走

Random Walk Approaches for Node Embeddings 一、随机游走基本概念 想象一个醉汉在图中随机的行走,其中走过的节点路径就是一个随机游走序列。 随机行走可以采取不同的策略,如行走的方向、每次行走的长度等。 二、图机器学习与NLP的关系 从图与NLP的…

图机器学习——2.1 节点嵌入:基于随机游走

嵌入(embedding)方法是目前文本分析,知识图谱相关中非常常见的一种算法。其为表示学习的一类方法,可以自动地从数据中学习“有用”的特征,并可以直接用于后续的具体任务。后面学习的相关嵌入学习均为表示学习中的内容。…

Python模拟随机游走

随机游走模型由首先由爱因斯坦在1926年以数学方式描述。由于自然界中的许多实体会以不可预知的方式移动,因此随机游走模型用来描述这种不稳定的移动。在这种移动模型中,移动节点随机选择一个方向和速度来从当前位置移动到新的位置。下面展示一维和多维情…

Python基于随机游走模型的PageRank算法及应用

资源下载地址:https://download.csdn.net/download/sheziqiong/86812933 资源下载地址:https://download.csdn.net/download/sheziqiong/86812933 基于随机游走模型的 PageRank 算法及应用 一、课题背景介绍 1.1 随机游走模型 随机游走也称随机漫步&…

图——随机游走算法

文章目录 推荐基本概念PageRankPersonalRankTextRankSimRank 推荐基本概念 其中用户user[A,B,C],物品item[a,b,c,d],用户和物品有以下的关系 上述便是一个典型的二分图,我们用G(V,E)来表示,其中V为用户user和物品item组成的顶点集即[A,B,C,…

python二维随机游走_Python模拟随机游走图形效果示例

本文实例讲述了Python模拟随机游走图形效果。分享给大家供大家参考,具体如下: 在python中,可以利用数组操作来模拟随机游走。 下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的 random 模块: # 随机游走 i…

随机游走 推荐系统论文阅读

emmmm本篇博客主要写了,自己阅读的一些论文,做了一些笔记,主要是记录。 基于深度随机游走的协同过滤推荐算法_刘靖凯 推荐算法:召回和排序 召回步骤常用的算法有协同过滤算法、隐语义算法 常用的协同过滤算法有基于用户的协同过…

理解随机游走

随机游走 基本思想 从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率1-a游走到这个顶点的邻居顶点,以概率a随机跳跃到图中的任何一个顶点,称a为跳转发生概率,每次游走后得出一个概率分布,该概率分布…

随机游走问题

随机游走指的是在一个点以等可能的概率走向下一个点。 问题1: Link:https://www.luogu.com.cn/problem/P3232 题意:这道题其实相当于求每条边经过的期望次数。 思路:每条边经过的期望次数不好算,我们想到点经过的期望次数。于…

随机游走 Random Walk

随机游走(英语:Random Walk,缩写为 RW),是一种数学统计模型,它是一连串的轨迹所组成,其中每一次都是随机的。[1][2]它能用来表示不规则的变动形式,如同一个人酒后乱步,所…

时间序列:时间序列模型---随机游走过程(The Random Walk Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 随机游走过程是一种特殊的ARMA序列。从分子运动到股价波动等现象都被建模为随机游走。 随机游走过程是AR(1)序列,而且,时间序列在时刻的值为: 随机游走过程本质上是到当前时间…

随机游走(Random Walk)算法

随机游走 英文:random walk 定义:随机游走,概念接近于布朗运动,是布朗运动的理想数学状态。 核心概念:任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律。 随机游走算法的基本思想是: 从一个或一系列顶点…

ArrayList分页Lists.partition遇到的坑

一、问题的发现 最近在用分布式任务powerjob的时候,发现了一个关于数组分页之后的序列化问题。事情是这样的,在我执行MapReduce模式的时候,发现了在生成子任务时报了com.esotericsoftware.kryo.kryo5.KryoException: Class cannot be created…

partition list java_Java之Lists.Partition项目中的使用

开心一笑 【媳妇儿问我:“孩子都快出生了,你名字想好了没呀?” 我说:“都想好了,要是生个儿子名字就叫“好帅” 媳妇儿问:“为什么呀?” 我说:“别人看到我就会说,好帅的爸爸。】 提出问题 Java之Lists.Partition在项目中的如何被使用??? 学习地址 解决问题 前言 具…

Lists.partition的使用和里面的坑

作用 partition(List list, int size): 将list集合按指定长度进行切分&#xff0c;返回新的List<List<??>>集合。 案例 引入pom文件 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><vers…