首页 > 编程语言 >Java的MVC设计模式,带你深刻理解MVC

Java的MVC设计模式,带你深刻理解MVC

时间:2023-06-30 23:55:05浏览次数:52  
标签:控制器 Java 处理 模型 视图 MVC 应用程序 设计模式

什么是MVC?就是Model View Control,模型视图控制器。

MVC流程图解

1.MVC概念:

MVC本来是存在于Desktop程序中的,M(Model)是指数据模型,V(View)是指用户界面,C(Control)是控制器。使用MVC的最直接目的就是将M和V实现代码分离,C则是确保M和V的同步,一旦M改变,V应该同步更新。

2.MVC工作方式:

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  • 视图

    视图就是用户直接看到的并且可以与之交互界面。比如用Html元素组成的界面,以及包括一些flash等等。MVC一个很有用的好处就是,能为你的应用程序处理很多不同的视图,然而在视图中却没有真正的处理发生。

  • 模型

    模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。

    同时由于模型的代码只需写一次就可以被多个视图重用,所以,减少了代码的冗余度。

  • 控制器

    控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

由上我们总结一下MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

3.使用MVC的原因

很多对于Web应用程序来说,经常会出现将数据层代码和html等类似的表现层代码混在一起,经验丰富的则会把他们分离开,但是对于经验较少的,就难上加难了。因此,MVC从本质上,强制性的将他们分离开来。

①使用MVC最重要的原因就是,多个视图可以共享一个模型,由于你已经将数据和业务规则分开来,能最大程度减少代码的冗余度,最大化的冲用你的代码,这样,在后期的维护阶段,也能减轻很多压力。

②再者,由于运行MVC的应用程序的三个部分是相互独立的,改变其中一个不会影响另外两个,在设计思想中,我们就可以轻松的看到这种高内聚低耦合的优点。

③最后,控制器来链接不同的模型和视图去完成用户的需求。给定一些可重用的模型的视图,控制器就可以很轻松的根据用户的需求选择模型就行处理。这个操作看起来就很便捷。

4.MVC的缺点:

任何一件事物,都有两面性,MVC也是如此,主要有以下三点:

  • 没有明确的定义

    完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

  • MVC并不适合小型甚至中等规模的应用程序

    花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。

  • 增加系统结构和实现的复杂性

    对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

最后,在java中, 最典型的MVC就是Jsp + Servlet + JavaBean的模式。

标签:控制器,Java,处理,模型,视图,MVC,应用程序,设计模式
From: https://www.cnblogs.com/nifrecxgh/p/17518187.html

相关文章

  • Java中的内部类,代码块
    前言学习Java过程中,对内部类和代码块部分知识比较模糊,容易忘掉。今天再学的时候有一些其他的收获,整理记录一下。1.代码块代码块的作用可以为初始化变量。都在在构造器方法之前执行,分为静态代码块和匿名代码块。静态代码块是在类加载时执行,因此只执行一次。匿名代码块在new实......
  • JAVA石头迷阵游戏
    大家帮我看看这个代码有没有问题,为什么将z设为作弊器但是在IDE中运行出来没有用//测试类importjavax.swing.*;publicclassTest{publicstaticvoidmain(String[]args){newMainFrame();}}importjavax.swing.*;importjava.awt.event.ActionEvent;......
  • java相关
    1、java环境建立2、windows系统下maven环境设置windows系统下下载二进制包apache-maven-3.6.0-bin.zip,然后解压。 第二种方法:使用绝对路径添加maven环境变量,直接在path里面的最前面添加c:\maven\bin;4、windows安装tomcat  设置环境变量也用绝对路径下载https://tomcat.apache.......
  • Java 期中考试及pta4、5总结
    菜单计价1~3(1)前言:期中考试的题目比较简单但是具有典型意义,ptA的题和之前的大差不差,所以会省略一些总体来说这几次作业还是对Java的学习有较大的帮助的,需要认真对待(2)设计与分析:一测验1-圆类设计下面是题目要求:7-1测验1-圆类设计分数 12......
  • centos7安装java
    1.tar-zxvfjdk-8u11-linux-x64.tar.gz 2.编辑环境变量vim/etc/profile 3.source/etc/profile4.java-version ......
  • [转]前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 &quot
    1、问题:前台数据,JSON字符串带有引号“”,数据被传递到后台,引号被转义为&quot,后台无法解析。前台数据如下:正常后台数据如下:大部分正常,只有JSON字符串中的“”被转义为&quot2、解决:方法一:使用apache的lang包里的方法StringappJson=StringEscapeUtils.un......
  • 深入学习 Java 类加载机制
    博主介绍:✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,阿里云专家博主,华为云云享专家✌......
  • Java-语法基础
    JDK8复习用Java前置知识JavaSEJavaStandardEdition标准版支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API此版本以前称为J2SEJavaEEJavaEnterpriseEdition企业版一套用于企业环境下的应用程序的应用方案(包含:Servlet、Jsp),主要针......
  • Java基础语法
    1、Java的八种基本数据类型1、byte1字节取值范围:-128~1272、short2字节取值范围:-32768~327673、int4字节取值范围:-231~231-1#int是开发中最常用的,也是Java中默认的数据类型4、long8字节取值范围:-263~263-1#声明超过int取值范围的lon......
  • java流程控制
    一、Scanner对象java的一个工具类用来获取用户输入使用方式:导入java.util.Scanner包就能使用基本语法Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入字符串读取值之前我们一般需要使用hasNext()与hasNextLine()判断是......