论MVC架构设计及其应用

MVC架构设计及其应用

摘要MVC模式被广泛应用于各种软件的设计中,其主要原因是因为他给软件开发工作者们提供了一个可以解决绝大多数问题的一个模式与方法。MVC架构将模型,视图和控制隔离开来,他本身并没有新的功能,只是一种对项目的规范,方便后期的维护,同时这样做可以提高代码的书写效率。MVC是否就能够解决所有的问题呢?换句话说就是MVC是否是对于所有的项目都是和是的呢?这个观点从根本上来说一定是错误的,因为所有的架构模式都是为了解决问题方便而产生的,根本不存在一个万能的架构

    关键词:MVC;建构模式;案例分析;视图层;模板层;控制层

 

引言当前MVC模式被广泛应用于各种软件的设计中,其主要原因是因为他给软件开发工作者们提供了一个可以解决绝大多数问题的一个模式与方法。让开发者们知道在什么阶段或者说在什么版块里应该做什么事情。


1.MVC简介

大家所熟悉的MVC有很多优点,首先最重要的一点是多视图能共享一个模型。同一个模型能够被不同的视图重用,大大提高了代码的可重用性。由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想构造良好的搜耦合的构建。此外,控制器提高了应用程序的灵活性和可配置性,控制器可以用来连接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。

2.MVC具体项目

接下来将从我的一个具体完成的小项目去简要的介绍一下MVC模式在具体项目中的使用。我介绍的是一个基于MVC模式完成的学生选课系统,其中model层,即实体类在我这个项目中的具体体现为bean,service,dao,这三层,他们分别是具体的实体类,逻辑调用封装的模型,以及具体的方法封装的模型。View层在这里的体现较为简单,即jsp界面。coltroller层在这里的具体体现就是我的servlet层。这就是项目主要的模块组成以及各个模块的大致功能。

 

下面以具体的登录功能来详细的介绍MVC模式在项目中具体操作时是如何运行的,首先我们会看到登录界面,这个就是我们基础的jsp界面,也就是我们MVC中的view层,当我们输入相关信息,点击登录按钮后,浏览器将会把我们的请求发给后台的服务器,其具体的体现就是,通过put请求的形式将请求数据发送给servlet层,也就是MVC中的servlet层,然后在servlet层进行指定的逻辑分析,并调用相关的dao层以及bean层实体来具体的实现指定的行为以及封装数据。经过dao层的判断之后,我们将会等到我们登陆的信息是否正确,此时dao层的信息会返回给controller层,然后controller层判断一线用户的登录信息是否正确,然后将信息传递给view层,如果信息正确,则登录系统成功,如果信息错误则登录系统失败.

 

3.MVC详细介绍

从上面的实例我们可以得知,MVC架构将模型,视图和控制隔离开来,他本身并没有新的功能,只是一种对项目的规范,方便后期的维护,同时这样做可以提高代码的书写效率。接下来详细的分析一下MVC模式中个层的具体作用。

模型负责封装应用的状态,并实现应用的功能;封装的是数据源和所有对这些数据的操作;在组件中,模型表示组件的状态和操作状态的方法。模型通常分为数据模型和业务逻辑模型:数据模型和业务逻辑模型,数据模型主要存放业务数据,如订单,用户信息等。业务逻辑模型往往是对数据的处理,如订单和用户信息的修改。mvc的三个部件中模型拥有处理的处理能力,安装上文所说,M可以连接和处理数据库。(EJBs和ColdFusion Components构建对象处理数据库)被模型返回的数据是中立的(模型于数据格式无关),这么一来一个模型可以被多个视图调用。可以减少代码的重复性。

视图是将模型的内容呈现出来,用户可以通过对视图的操作进而操作模型,封装的是对数据源Model的显示;一个模型可以被多个视图复用,一个视图理论上也可以和多个模型进行关联;视图从模型中获取展示的数据,然后用自己的方法展示给用户。如用户点击H5页面的登录,视图会给模型提交用户的数据,视图接收模型的数据,然后按照自己的方式展示给用户。在实际WEB项目中,视图通常是HTML,XHTML,XML/XSL,WML代码组成的界面。在MVC模式中,视图只是起到展示的作用,真正处理数据其实并没有发生。

控制器时用来处理视图和模型关系的组件。封装的是外界对模型的操作。这些操作一般为转发给模型,模型处理数据,并调用模型中相应的一个或多个方法;一般控制器是在模型和视图之间作为沟通的组件存在的。用户填写完账号密码由控制器接收处理并转发给模型。可以让视图和控制器之间的耦合关系更加密切;严格的分工可以提高工作的效率。当控制器接收到用户的请求之后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;控制器会选择响应应用的视图,把模型更新后的数据发送给视图,视图按照自己的方式展示给用户;当点击WEB的超链接和发送HTML表单时,控制器本身并不传输任何数据,也不做任何处理。只是接收请求并决定调用哪个模型进行构建去处理请求,然后决定用哪个视图来显示模型返回的数据。

4.MVC问题及解决方法

 

上面已经详细介绍了MVC的工作方式以及具体的工作流程,那么MVC是否就能够解决所有的问题呢?换句话说就是MVC是否是对于所有的项目都是和是的呢?这个观点从根本上来说一定是错误的,因为所有的架构模式都是为了解决问题方便而产生的,根本不存在一个万能的架构,我在使用MVC进行项目架构时,常常会感到调用的困惑,各种板块之间相互调用,有的非常简单的逻辑也要调用多次,这就造成资源的严重浪费以及逻辑的复杂化,增加了代码的学习成本。而对于有的数据访问,需要调用多个模型方法才能获得到足够的数据显示,有的数据是一样的,但是同样的进行多次访问,这都大大降低了系统的执行效率,对于开发者的逻辑编写也是一个非常大的挑战。在遇到上面的问题是,通用的解决办法就是不要盲目的套用MVC模式进行分析,在遇到一些非常简单或者逻辑非常复杂的问题是,我们可以采用一些其他的方法进行分析和判断,这样更有利于提高我们系统的效率以及简化我们的业务逻辑。


结语:所以说MVC是一种软件设计的理念,可以让我们的代码结构更加清晰明了,没有使用MVC的时候,我们的代码结构像下图那团乱麻一样,而MVC提供一种规则,使用MVC分层设计之后把相同类型的代码放在一起,这样就形成了层次,达到分层解耦、复用、便于测试和维护的目的。但是模式也要适合用用场景,不能随意使用,这样只会适得其反。

 

 


参考文献

[1] :MVC框架的主要问题是什么

https://www.cnblogs.com/crazycode2/p/11701089.html

[2] :MVC架构详谈

https://blog.csdn.net/Guo_Yuhua/article/details/119977966

[3] :MVC模式详细说明

https://blog.csdn.net/devillyd2018/article/details/97162887

[4] MVC设计模式之web应用分析

http://www.imooc.com/article/266200

posted @ 2022-06-11 22:27  见怪见外  阅读(138)  评论(0编辑  收藏  举报