MVC减少编程复杂性

JSP的两种设计模式(MVC模型和非MVC模型) 上个星期刚学到JavaBean,学的不是很懂,在这里做下梳理 JavaBean是一种可重用组件技术,可以将内部动作封装起来,用户不需要了解其如何运行,只需要知道如何设计调用及处理结果就可以来。在开发动态网站的时候,我们使用JavaBean可以简化JSP页面的设计和开发,提高代码的可读性,从而提高网站应用的可靠性和可维护性。 一、非MVC模式 在基于JSP的B/S模式的程序开发中,非MVC模式是一种... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 随着面向对象的语言(如Java)的迅速发展和普及,越来越多的编程人员开始在应用开发中使用这些语言。然而原有的开发语言(即面向操作的开发语言如C++等)在短时间内还不可能退出历史舞台,因此现在就出现了面向对象的语言和传统的面向操作的语言共存的局面。在设计应用中同时使用两类不同的语言(混合语言设计)比过去只使用一类语言会带来许多新的问题,其中复杂性就是混合语言设计中最经常遇到的问题。下面我们探讨混合语言设计中可能导致复杂性增加的地方,以及如何减少以至消除这些复杂性。   复杂性   复杂性是应用开发过程中最令人头疼的一个问题。每当在一个应用中增加一个功能时,它的复杂性通常呈几何级的增长。这种复杂性往往导致程序的开发无法再继续下去。这也是现在为什么许多应用只有Beta版本而没有正式版的原因。   专家将应用开发过程产生的复杂性分为两类,即非本质的(accidental)和本质的(essential)。本质的复杂性是对于解决目标问题所必然产生的复杂性,非本质的复杂性是由于选择了不适当的开发工具和设计工具而产生的复杂性。对于一个功能确定的程序来讲,本质的复杂性是确定的,而非本质的复杂性则是没有限制的。因此,一个应用的开发要想较顺利地取得成功,就需要尽可能地减少非本质的复杂性。   OOD的特点   面向对象的设计(OOD)将一个程序分解成根据具体的对象而设计的一系列元素。这些具体对象的行为和数据以一种叫做“类(class)”的编程单元进行打包。应用程序创建一个或多个这些类的例示,也称为“对象(object)”。类的行为是通过创建对象之间的关系组合在一起的。   OOD允许开发者用两种主要的方法来控制复杂性的增加。第一,OOD定义严格的出口语义,这允许开发者隐藏实现的细节,并且明确说明什么方法是其它的对象可以访问的。这个信息隐藏使得可以对大部分的代码进行修改而不影响其它的对象。   第二,OOD将对象之间的关系分为四类:继承、包容、使用和协调。适当地使用这些关系可以大大减少应用开发过程中本质的和非本质的复杂性。如,继承是产生面向对象设计中可再使用的主要因素。这个再使用性是通过代码共享和多态性获得的。这种再使用可以大大减少应用的本质的复杂性。包容允许一个类的用户在使用包容器时忽略被包容的类(class)。这个简化使设计者能够大大减少应用的非本质的复杂性。   可视化接口在OOD方面的不足   许多程序都需要可视化接口,这些接口由对话框、选单、工具条等组成。这些可视化接口的增加会引进OOD设计的不足,使得一个好的面向对象的设计走向反面。可视化接口有三个属性可能会给应用开发带来麻烦。   第一,可视化接口提高了传统的面向操作的拓扑结构。用户产生接口事件,如开关按键和列表框选择等,受到程序的一个模块的驱动并且用来对静态的数据进行操作。在设计中将这面向操作的拓扑结构同一个面向对象的设计混合在一起将导致对象之间的大量的杂合。   第二,用户接口通常对于同样的信息经常会需要许多不同的显示。如,一个客户选择列表框可以包含一个客户的名字和电话号码以及许多其它客户的名字。   当用户选择某个特定的客户后,他/她的名字和电话号码及其它全部相关的信息都会详细地显示出来。   除此之外,一个简单的程序可能具有不同的用户接口。如一个银行账户系统有一个接口用于出纳员来访问账户平衡、存款和取款,而监督者的接口则包含另外的信息并加上账号管理的功能。这些不同的接口很容易导致类的扩展。   最后,可视化接口在整个设计阶段还会进行较大的改变。这些改变包括完全重新安排用户与系统的交互操作等。可视化接口的这些改变即使在最好的设计中也会增加应用开发的复杂性。   MVC弥补可视化接口/OOD的不足   模型/界面/控制器(Model/View/Controller,MVC)编程技术允许一个开发者将一个可视化接口连接到一个面向对象的设计中,而同时还可以避免我们上面讨论的几个问题。MVC最初是为Smalltalk语言而设计的。MVC通过创建下面三个层将面向对象的设计与可视化接口分开:   模型(Model):模型包含完成任务所需要的所有的行为和数据。模型一般由许多类组成并且使用面向对象的技术来创建满足五个设计目标的程序。   界面(View):一个界面就是一个程序的可视化元素,如对话框、选单、工具条等。界面显示从模型中提供的数据,它并不控制数据或提供除显示外的其它行为。一个单一的程序或模型一般有两种界面行为。   控制器(Controller):控制器将模型映射到界面中。控制器处理用户的输入,每个界面有一个控制器。它是一个接收用户输入、创建或修改适当的模型对象并且将修改在界面中体现出来的状态机。控制器在需要时还负责创建其它的界面和控制器。   控制器一直决定哪些界面和模型组件应该在某个给定的时刻是活动的,它一直负责接收和处理用户的输入,来自用户输入的任何变化都被从控制器送到模型。   界面从模型内的对象中显示数据。这些对象的改变可以通过也可以不通过用户的交互操作来完成。如:在一个Web浏览器中负责接收页面的对象收集和装配栈中的信息,必须有某种方式来让这些对象通知界面数据已经被改变了。在模型变化时有两种方法来对界面进行更新。   在第一种方法中,界面可以告诉模型它正在监视哪些对象。当这些对象中有任何一个发生变化时,一个信息就被发送给界面。界面接收这些信息并且相应地进行更新。为了避免我们上面讨论的不足,模型必须能够不用修改就支持许多种不同的界面显示。   第二个方法并不直接将界面连接到模型中,它的控制器负责在模型变化时更新界面。控制器通过对模型对象或观察器方法进行监测来检测模型中的变化。这个方法不用了解界面的模型知识,因此界面就变成是可以跨应用使用的。   使用MVC的优点   MVC通过以下三种方式消除与用户接口和面向对象的设计有关的绝大部分困难:   第一,控制器通过一个状态机跟踪和处理面向操作的用户事件。这允许控制器在必要时创建和破坏来自模型的对象,并且将面向操作的拓扑结构与面向对象的设计隔离开来。这个隔离有助于防止面向对象的设计走向反面。   第二,MVC将用户接口与面向对象的模型分开。这允许同样的模型不用修改就可使用许多不同的界面显示方式。除此之外,如果模型更新由控制器完成,那么界面就可以跨应用再使用。   最后,MVC允许应用的用户接口进行大的变化而不影响模型。每个用户接口的变化将只需要对控制器进行修改,但是既然控制器包含很少的实际行为,它是很容易修改的。   面向对象的设计人员在将一个可视化接口添加到一个面向对象的设计中时必须非常小心,因为可视化接口的面向操作的拓扑结构可以大大增加设计的复杂性。   MVC设计允许一个开发者将一个好的面向对象的设计与用户接口隔离开来,允许在同样的模型中容易地使用多个接口,并且允许在实现阶段对接口作大的修改而不需要对相应的模型进行修改。
mvc 框架的理解 mvc原称 model-view-controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。 MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面... 阅读详情

相关推荐

MVC框架知识详解

MVC框架知识详解

不迁怒,不贰过。小知识,大智慧。 3118

SpringMVC一个类处理多个业务以及注意事项

连接:HelloSpringMVC 在上一篇中,通过网址发送请求转发到test.jsp页面,${msg}中的信息存放在request域中。 SpringMVC在进行视图跳转的时候是可以转发到html页面的,但是需要在springmvc.xml文件中设置:<mvc:default-servlet-handler/>,但是html页面不支持EL表达式,无法获取到后端携带的数据,如果想要获取数据,就使用模板引擎+html。 在以上的写法中,一个controller只能做一件事,需要配置多个bean,显

Mu木 276

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4702

什么是mvc设计模式 (附代码示例)

什么是mvc设计模式,举一个mvc设计模式的例子。 答:mvc设计模式是用模型/试图/控制器三元组用来构建用户界面。一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。 例子:存在三种对象:学生,教师,管理员;分别能实现登录,教师能实现注册;教师能对学生进行

Detective_的博客 8676

关于MII、RMII、GMII、RGMII、PHY、网络变压器、RJ45的硬件总结

文章目录前言一、网络传输结构及原理1.以太网的工作原理2.TCP/IP协议3.数据链路层(MAC)二、介质独立接口MII,RMII,GMII,RGMII1.MII(Media Independent interface)2.RMII(Reduced Media Independent Interface)3.GMII(Gigabit Medium Independent)4.RGMII(Reduced Gigabit Media Independent Interface)三、物理层芯片(PHY)二、使用步

weixin_44415816的博客 3万+

ABAP动态填充Word模板:基于cl_docx_document的XML替换方案

本文详细介绍了ABAP中基于cl_docx_document类的动态Word模板填充方案。该方案通过直接操作DOCX文件的XML核心,完美解决了传统OLE/DOI方法在格式保真、性能和后台运行方面的痛点,是实现复杂、批量Word文档生成的优雅解决方案。

gpt4scribbler的博客 526

mvc优点和缺点

优点 耦合性低 视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。如果把数据库从MySQL移植到Oracle,或者改变基于RDB...

XU13915421641的博客 1288

【PyQt】使用PyQt6基于Scenedetect制作视频场景自动分割应用

通过详细介绍PySceneDetect的功能和应用,本文阐释了如何利用这一工具提高视频编辑的效率。我们讨论了安装方法、命令行使用示例以及如何在Python脚本中集成PySceneDetect。此外文章还涵盖了基于PyQt6的图形界面设计,通过多线程技术处理视频,保证界面的响应性,并通过实时反馈机制提升用户体验。无论是专业的视频制作团队还是个人爱好者,PySceneDetect都提供了一种可行的、效率高的场景检测工具,让视频编辑工作变得更加简单快捷。

Mr数据杨 963

使用基于 SpringMVC 的透明 RPC 开发微服务

来源:fredal.xin/develop-with-transparent-rpc我司目前 RPC 框架是基于 Java Rest 的方式开发的,形式上可以参考 SpringCloud...

JAVA葵花宝典 615

三极管、MOS管和晶体管综合对比——《器件手册--三极管、MOS管和晶体管》

IGBT(Insulated Gate Bipolar Transistor,绝缘栅双极型晶体管)是一种复合全控型电压驱动式功率半导体器件,结合了MOSFET的高输入阻抗、开关速度快的优点和双极型晶体管(BJT)的低导通压降、高电流密度的优点。例如,在NPN型三极管中,当基极电流增加时,集电极电流会按照一定的比例(放大倍数β)增加,这个比例通常在几十到几百之间。在NMOS管中,当栅极相对于源极的电压(Vgs)小于开启电压(Vth)时,漏极和源极之间没有导电沟道,电流无法通过,处于截止状态。

XU157303764的博客 2886

Android Audio基础——系统服务(二)

AudioService 继承自 IAudioService.Stub。IAudioService.Stub 类很明显是通过 IAudioService.aidl 自动生成的。AudioService 位于 Binder Native 端。AudioManager 拥有 AudioService 的 Binder Proxy 端,是 AudioService 在客户端的一个代理。几乎所有客户端对 AudioManager 进行的请求,最终都会交由 AudioService 实现。

小旭的专栏 2082

Spring模块组成

一,什么是Spring,使用Spring框架的好处 曾经Spring学习笔记中提到了Spring用来管理项目中所有的对象,是容器。这里详细介绍一下。 1、Spring是一个轻量级的开源框架,是为解决企业应用开发的复杂性而创建的;它是一个容器,用来装java对象,中间层框架起一个连接作用; 2、Spring是一个三层架构: Web层----SpringMvc 业务层----Spring的IOC思想 持久层-----SpringJDBC,ORM等等 二、Spring由哪些模块组成 关于Spring组成的模块,可

m0_54852350的博客 370

EMC意义下的共模(Common Mode)和差模(Differential Mode)

在电子产品中,信号或电源通过两根导线传输。对比维度差模(DM)共模(CM)电流方向一进一出,相等相反同向、相等回流路径两根导线组成的闭合回路地或外壳EMC影响较小容易辐射干扰,重点治理类型定义有用信号干扰信号抑制方法常规滤波器、电感、电容共模电感、磁环、屏蔽、接地技术等。

weixin_43199439的博客 1250

spring-概述-速览

spring spring是javaEE开源的轻量级别的框架,可以解决企业开发中遇到的难题,能够让编程变得简单,核心组件IOC容器和AOP面向切面编程 IOC控制反转:把整个对象创建的过程,统一交给我们的SpringIOC容器进行管理来实现管理,底层使用反射+工厂模式 Aop面向切面编程:对我们功能(方法)前后实现增强,比如打印日志,事务原理,权限管理,底层是基于动态代理模式实现的 减少到我们代码冗余的问题 优势: 方法的解耦,简化开发 AOp技术支持 提供声明事务支持 Junit单元测试 方

qq_44236958的博客 224

如何正确的计算两个角度的角度差?

这一步是必要的,因为它确保了无论a相对于b是在逆时针方向还是顺时针方向,d2总是正确地反映出绕圆相反方向的角度差。这样,当函数进行最后的比较时,它能够准确地比较两个方向的旋转路径并选择最短的一个。

小秋 AI SLAM 入门实战教程 4139

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MVC模式详解

MVC模式是一种广泛使用的设计模式,通过将应用程序分为模型、视图和控制器三部分,实现了关注点分离,提高了代码的可维护性和可扩展性。尽管引入MVC模式可能增加系统的复杂性,但对于中大型应用程序来说,其优点远远超过缺点。在实际应用中,MVC模式可以与其他设计模式结合使用,以实现更复杂和灵活的系统架构。

qq_47012987的博客 2687

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

什么是MVC

主要讲述了有关于MVC的概念以及应用

weixin_61880433的博客 4018

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MVC模式总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代.

m0_51960101的博客 881

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

由上我们总结一下MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。MVC一个很有用的好处就是,能为你的应用程序处理很多不同的视图,然而在视图中却没有真正的处理发生。①使用MVC最重要的原因就是,多个视图可以共享一个模型,由于你已经将数据和业务规则分开来,能最大程度减少代码的冗余度,最大化的冲用你的代码,这样,在后期的维护阶段,也能减轻很多压力。3.使用MVC的原因。

bjmsb79的博客 1758

Spring-MVC的优缺点

优点 封装代码,维护成本低,耦合性低 在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。 有利于开发中的分工,提高开发效率 在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。 组件重用,有利于代...

bbj1030的博客 1万+

对mvc模式的理解

对mvc的理解: mvc一般可以分为两种,mvc1(主动)、mvc2(被动) mvc1中经常会用到有“客户端”的项目中开发, mvc2中是用在web中的形式, mvc2比mvc1解耦更加的彻底,更加的实用,只不过controller的功能更加的复杂。mvc设计模式的特点: 优点: 1、提高了代码的重用性,(代码不需要写成多个版本) eg:网页版本和客户端版本的会有所不同,vie

bruscar的专栏 3615
上一篇: Java开发工具大比拼
下一篇: 谈谈TCP和UDP的一些简单应用
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值