MVC三层结构应用程序开发的优缺点
1.一个典型的应用软件包括展现给用户界面的编码、业务处理模块编码、数据访问处理编码几个部分。如果将这些部分放在一起编程,则应用软件内部各元素耦合性非常高;现在人们常将它们分开开发,然后将它们组装成一个整体。
2.作为一种设计模式,MVC优缺点并存。
3.MVC有以下优点:耦合性低、重用性高、利于分工开发、可维护性高、有利于软件工程化管理等。
(1)耦合性低:MVC程序中用于视图层和业务层分离,所以在更改视图层代码后不必重新编译模型层和控制层代码。同样,用于模型层与控制层相分离,一个应用程序的业务流程或者业务规则发生了改变后,只需改动MVC的模型层即可。
例如,把数据库从MySQL移植到Oracle,只需改变模型即可。由于MVC的是三个部件相互独立,改变其中一个不会影响其他两个,所以用这种模式设计的软件具有良好的松散耦合性。
(2)重用性高:MVC允许使用各种不同样式的视图来访问同一个服务器的代码,因为多个视图共享一个模型。例如,用户可以通过计算机订购某种产品,也可以通过手机订购某种产品。虽然订购的方式不一样,但处理订购产品的方式是一样的,所以对应的模型可以是一样的,由于对模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。这些视图只需要改变视图层的实现方式,无需对控制层和模型层做任何改变,所以可以最大化地重用代码。
(3)利于分工开发:使用MVC利于团队协作开发,从而大幅度缩短开发时间。它使程序员(java开发人员)集中精力与业务逻辑,界面程序员(HTML和JSP开发人员、界面美工人员)集中精力于表现形式。
(4) 可维护性高:由于MVC的软件开发具有松耦合性,他将视图层和业务逻辑层分离,因此应用程序更易于维护和修改。
(5)利于软件工程化管理:用于不同层各司其职,每一层不同的应用具有相同的特征,这样就可以对程序进行工程化、工具化管理。控制器可用来连接不同的模型和视图去完成用户的需求,从而为构造应用程序提供了强有力的手段,给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
2.另外,由于MVC呢部原理比较复杂,理解起来并不容易。所以,在使用MVC时需要精心地计划,需要花费一定的时间去思考。MVC有调试较困难、不利于中小型软件开发、增加系统结构和实现的复杂性、视图与控制器耦合度过强、视图对模型数据访问效率低的缺点。
(1)调试较困难:模型和视图分离给调试应用程序带来了一定的困难,所以每个部件在使用之前都需要经过彻底的测试。
(2)增加了系统结构和实现的复杂性:对于简单界面的开发,也需严格遵循MVC,使模型、视图与控制器分离,这会增加结构的复杂性,并可能产生过多的更新操作,降低运行的效率。
(3)不利于中小型软件开发:花费大量时间将MVC应用到规模并不很大的应用程序,在工作量、成本、时间等方面常常得不偿失,所有对中小型软件的开发,可不选择MVC模式。
(4)视图与控制器耦合度过强:视图与控制器虽相互分离,但却是联系紧密的部件,没有控制器的存在,视图的应用是很有限的,反之亦然,这样就会妨碍了它们的独立重用。
(5)视图对模型的访问效率过低:由于模型接口的不同,视图可能会需要多次调用才能获得足够的显示数据。对于未变化数据的不必要的频繁访问,也将损害操作性能。
MVC的设计模式为某一类问题提供了通用的解决方案,同时优化了代码,从而使代码更容易被人理解,提高了代码的复用性,并保证了代码的可靠性。
MVC三层结构应用程序开发的优缺点相关推荐
- 基于NHibernate的三层结构应用程序开发初步
本文并不是去详细的介绍如何使用NHibernate,而是通过一个简单的例子来演示基于NHibernate的三层结构应用程序开发过程.关于NHibernate的有关文档,DDL已经做了汉化,但是由于英文 ...
- 用MS.NET开发三层结构应用程序[转载]
用MS.NET开发三层结构应用程序[转载] 原文: http://industry.ccidnet.com/art/294/20030526/47418_1.html 传统两层结构 在过去应用系统开发 ...
- asp.net MVC三层结构代码生成器
asp.net MVC三层结构代码生成器 一.使用MVC开发的朋友都有一个苦恼,那就是三层结构大量重复代码比较鸡肋,写之无味,不写不行.最近也是从网上找了一些资料,自己又简单加工下,完善了该工具. 1 ...
- 〈转〉用VS2005.NET进行三层结构应用程序的开发
1.三层之间的关系: 三层是指:界面显示层(UI),业务逻辑层(Business),数据操作层(Data Access) 文字描述: Clients对UI进行操作,UI调用Business进行相应的运 ...
- JSPEL表达式MVC三层结构综合案例
文章目录 JSP 1,JSP 概述 2,JSP 快速入门 2.1 搭建环境 2.2 导入 JSP 依赖 2.3 创建 jsp 页面 2.4 编写代码 2.5 测试 3,JSP 原理 4,JSP 脚本 ...
- java中的mvc三层结构究竟有什么关系
一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库 ...
- javascript的MVC三层架构(案例之分页插件)
javascript的MVC三层架构(案例之分页插件) 作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing 最近很少写博文,一是比较忙,二是没啥心情,好, ...
- 深入理解BS结构应用程序
随着学习的深入,和编程经验的丰富,对BS应用程序有一些认识. 在一些讨论软件技术的QQ群里,或一些社区.BBS中,经常会有一些初学者会犯一些认知性的错误.比如经常会有一些朋友提这样的一些问题:&quo ...
- 浅谈“三层结构”原理与用意(转帖)
浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...
最新文章
- zabbix部署onealert云警告平台
- 自言自语(三)--部分中文字体
- 一个跨国银行的敏捷转型案例要点之Agile Center
- ThinkPHP5下自己写日志
- h5 修改title 微信_微信h5网页自定义分享(标题、描述、图标)
- 字典中文乱码怎么处理_CATIA教程技巧和二次开发宏:我的零件有很多的几何体,但是几何体的名称是乱的,还有乱码,影响我的后续操作,我该怎么处理?...
- 一个存储过程,折腾了我半天
- cef js返回c++的代码_CEF3开发者系列之JS与C++交互之简单介绍
- 论文研读 —— 5. FaceNet A Unified Embedding for Face Recognition and Clustering (3/3)
- 基于GSM远程短信防盗报警系统
- c语言小球碰壁,小球碰壁效果
- EasyBoot使用方法
- 手机用计算机微信运动记步吗,微信运动到底是如何记录步数的?
- project2016调配资源冲突
- 深度学习 yolov5等结构图
- AD中PCB走线实现开窗
- Notion数字笔记使用教程
- Syzkaller测试
- 2018华为软挑--模拟退火+FF解决装箱问题【C++代码】
- 什么是节点流和处理流?
热门文章
- 转 ASCII, DBCS,UNICODE小结
- vue svg阴阳图水波图
- 华为交换机通过ACL限制登录telnet账户为指定IP地址
- [Search]swf 转mp4,未成功
- java计算机毕业设计田径运动会管理系统源程序+mysql+系统+lw文档+远程调试
- 两弧相等能得到什么_如果两条弦相等,那么( )A.这两条弦所对的弧相等B.这两条弦所对...
- 怎么把图片变清晰?这些方法一步就搞定!
- android9.0紧急号码拨号流程
- 用Dota2“最强”算法PPO完成CarPole和四轴飞行器悬浮任务
- 两个方法:教你快速免费合并多个PDF文件