MVC设计模式案例分析
2020-05-13 17:18 一念永恒s 阅读(773) 评论(0) 编辑 收藏 举报MVC架构设计模式案例分析
丁海升
(石家庄铁道大学,河北省石家庄市050000)
摘 要:软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
关键词:MVC;业务逻辑;架构策略;用户交互;
一、MVC原理
为了便于理解下面将以web网站为例去阐述MVC的原理以及案例
- 模型(model)
是Web应用中用于处理数据逻辑的部分,包括Service层和Dao层;Service层用于和数据库联动,放置业务逻辑代码,处理数据库的增删改查,Dao层用于放各种接口,以备调用;
- 视图(view)
是Web应用中处理响应给客户的页面的部分,例如我们写的html静态页面,jsp动态页面,这些最终响应给浏览器的页面都是视图;通常视图是依据模型数据来创建的;
- 控制器(controller)
在Web应用中,简而言之,就是Servlet,或者SpringMVC框架中加了注解@Controller的方法(实际上一个方法就相当于一个对应的Servlet);
以web网站为例:首先,浏览器发送请求,JSP页面响应给客户,客户点击JSP页面上的内容,再次提交请求;这一次,请求到Controller控制器模块,也就是Servlet服务器中,Servlet服务器通过分析请求,判断客户的需求,然后调用Model模型,用Service层处理数据库的增删改查,用Dao层提供接口支持,然后Servlet将数据驱动到View视图层也就是JSP页面中,将JSP页面响应给浏览器,客户看到动态的内容。
在这个过程中,最典型的的MVC模型就是 JavaBean + JSP + Servlet的模式,各司其职,分工合作;这种设计理念可以把html代码块和业务逻辑代码块分开,让代码更清晰,便于开发。
二、HTTPHANDLE
·HttpHandler指所有实现IHttpHandler接口一类类型的统称,它是一个大的称谓。这些类型有一个共同的功能,那就是可以用来处理Http请求。
·IHttpHandler是微软定义的一类接口,用来约束所有能够处理Http请求的类型的接口规则。
·MvcHandler是Mvc里面实现IHttpHandler接口的类型,也就是说,MvcHandler是Mvc里面处理Http请求的类型。
总而言之,HttpHandler只是一个逻辑称谓,它并不具体存在。而IHttpHandler和MvcHandler是.net framework里面具体存在的接口和实现类,是前者的表现形式。
三、优缺点
1.优点
·耦合性低:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
·重用性高:随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。MVC使开发和维护用户接口的技术含量降低。
·部署快:使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
- 缺点
·没有明确的定义: 完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。
·增加系统结构和实现的复杂性: 对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
参考文献
[1] CSDN软件开发网https://blog.csdn.net/wr98442878/article/details/8992682
[2] 中国知网https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbnam
[3] 百度百科,MVC框架,https://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6
[4] 软件架构实践第二版