APP下载

浅谈MVC模式

2018-05-14彭诗媛阚洪

读天下 2018年20期
关键词:视图控制器模型

彭诗媛 阚洪

摘要:MVC是一种源于桌面程序的架构模式,它的基本思想是把程序界面和业务逻辑分开,这样便于软件的后期维护,同时也方便开发时期分工及管理,MVC有很多优点所以现在已经被广泛地应用于web开发中。本文将介绍MVC模式的概念,并对各个层次的功能进行详细的描述以及阐述MVC模式的处理过程和总结MVC模式的优缺点。

关键词:MVC;视图;模型;控制器

一、 MVC模式概念

MVC的英文全称是Model-View-Controller。它的核心思想是有效地组合“视图”,“模型”和“控制器”。

在这种模式中,Servlet用来处理请求的事务,充当了控制器(Controller即“C”)的角色,Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图(View即“V”)的角色。JavaBean则负责数据的处理,也就是模型(Model即“M”)的角色。

Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,Servlet负责处理用户请求,JSP负责数据显示,JavaBean负责封装数据。Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。

二、 视图(View)

视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。

对于Web应用来说,可以概括为HTML界面,随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。

对于基于请求/响应方式的主体。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。

三、 模型(Model)

模型是应用程序的主体部分。模型表示业务数据和业务逻辑。就是业务流程/状态的处理以及业务规则的制定。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。

业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员来说非常重要。

业务模型还有一个很重要的模型那就是数据模型。数据模型主要是指實体对象的数据保存。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。

四、 控制器(Controller)

控制器接受用户的输入并调用模型和视图去完成用户的需求。当Web用户单击Web页面中的提交按钮来发送HTML表单时,控制器接受请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。

划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个链接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。

五、 MVC的处理过程

首先用户通过视图层发出请求,接着控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器将处理后的数据传递给视图层,并通过视图层更新显示。

六、 MVC的优点

(一) 耦合性低

所谓耦合性就是模块代码之间的关联程度。利用MVC框架使得View(视图)层和Model(模型)层可以很好地分离,这样就达到了解耦的目的,所以耦合性低,减少模块代码之间的相互影响。

(二) 可扩展性好

由于耦合性低,添加需求,扩展代码就可以减少修改之前的代码,降低bug的出现率。

(三) 模块职责划分明确

主要划分层M,V,C三个模块,利于代码的维护。

七、 MVC的缺点

1. 由于实施MVC模式过程而产生的开销。设计MVC模式需要有经验的分析人员对系统进行分析;类的数量及文件数量的增加。采用MVC模式设计会增大应用程序的代码量。

2. 由于设计MVC模式时分析不够,设计不当而引起相反的效果,把属于一个模块的分开,把不相干的模块聚在一起。对属于一个实体不同方面的严格区分导致了一个紧凑结构,使得测试和维护的工作量大幅度增加,每一次变动牵涉到许多本不相干的模块的变动。

八、 总结

通过对MVC的探讨,我们知道它是用来分割页面和数据库访问的框架,降低了两者的耦合度,同时通过Controller的控制,也使系统更加的灵活,使我们的代码更健壮,复用性更强,但是凡事都有他适用的范围,我们不能觉得它好,就瞎用,有时可能会适得其反,因此MVC的学习还需要我们以后慢慢探讨。

参考文献:

[1]孙琦.浅议MVC设计模式[J].科技信息:科学·教研,2007(16):74.

[2]李谱华.浅析MVC设计模式及其应用[J].科技信息,2010(16):662-663.

[3]刘方军.基于MVC三层架构模式的研究与应用[D].广东工业大学,2011.

作者简介:

彭诗媛,阚洪,重庆市,重庆工程学院。

猜你喜欢

视图控制器模型
南京溧水电子3款控制器产品
自制空间站模型
水泥生料立磨压差变参数二型模糊控制器设计
基于NFV的分布式SDN控制器节能机制
模型小览(二)
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《投影与视图》单元测试题
圆周运动与解题模型
Django 框架中通用类视图的用法