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三层结构应用程序开发的优缺点相关推荐

  1. 基于NHibernate的三层结构应用程序开发初步

    本文并不是去详细的介绍如何使用NHibernate,而是通过一个简单的例子来演示基于NHibernate的三层结构应用程序开发过程.关于NHibernate的有关文档,DDL已经做了汉化,但是由于英文 ...

  2. 用MS.NET开发三层结构应用程序[转载]

    用MS.NET开发三层结构应用程序[转载] 原文: http://industry.ccidnet.com/art/294/20030526/47418_1.html 传统两层结构 在过去应用系统开发 ...

  3. asp.net MVC三层结构代码生成器

    asp.net MVC三层结构代码生成器 一.使用MVC开发的朋友都有一个苦恼,那就是三层结构大量重复代码比较鸡肋,写之无味,不写不行.最近也是从网上找了一些资料,自己又简单加工下,完善了该工具. 1 ...

  4. 〈转〉用VS2005.NET进行三层结构应用程序的开发

    1.三层之间的关系: 三层是指:界面显示层(UI),业务逻辑层(Business),数据操作层(Data Access) 文字描述: Clients对UI进行操作,UI调用Business进行相应的运 ...

  5. JSPEL表达式MVC三层结构综合案例

    文章目录 JSP 1,JSP 概述 2,JSP 快速入门 2.1 搭建环境 2.2 导入 JSP 依赖 2.3 创建 jsp 页面 2.4 编写代码 2.5 测试 3,JSP 原理 4,JSP 脚本 ...

  6. java中的mvc三层结构究竟有什么关系

    一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库 ...

  7. javascript的MVC三层架构(案例之分页插件)

    javascript的MVC三层架构(案例之分页插件) 作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing 最近很少写博文,一是比较忙,二是没啥心情,好, ...

  8. 深入理解BS结构应用程序

    随着学习的深入,和编程经验的丰富,对BS应用程序有一些认识. 在一些讨论软件技术的QQ群里,或一些社区.BBS中,经常会有一些初学者会犯一些认知性的错误.比如经常会有一些朋友提这样的一些问题:&quo ...

  9. 浅谈“三层结构”原理与用意(转帖)

    浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...

最新文章

  1. zabbix部署onealert云警告平台
  2. 自言自语(三)--部分中文字体
  3. 一个跨国银行的敏捷转型案例要点之Agile Center
  4. ThinkPHP5下自己写日志
  5. h5 修改title 微信_微信h5网页自定义分享(标题、描述、图标)
  6. 字典中文乱码怎么处理_CATIA教程技巧和二次开发宏:我的零件有很多的几何体,但是几何体的名称是乱的,还有乱码,影响我的后续操作,我该怎么处理?...
  7. 一个存储过程,折腾了我半天
  8. cef js返回c++的代码_CEF3开发者系列之JS与C++交互之简单介绍
  9. 论文研读 —— 5. FaceNet A Unified Embedding for Face Recognition and Clustering (3/3)
  10. 基于GSM远程短信防盗报警系统
  11. c语言小球碰壁,小球碰壁效果
  12. EasyBoot使用方法
  13. 手机用计算机微信运动记步吗,微信运动到底是如何记录步数的?
  14. project2016调配资源冲突
  15. 深度学习 yolov5等结构图
  16. AD中PCB走线实现开窗
  17. Notion数字笔记使用教程
  18. Syzkaller测试
  19. 2018华为软挑--模拟退火+FF解决装箱问题【C++代码】
  20. 什么是节点流和处理流?

热门文章

  1. 转 ASCII, DBCS,UNICODE小结
  2. vue svg阴阳图水波图
  3. 华为交换机通过ACL限制登录telnet账户为指定IP地址
  4. [Search]swf 转mp4,未成功
  5. java计算机毕业设计田径运动会管理系统源程序+mysql+系统+lw文档+远程调试
  6. 两弧相等能得到什么_如果两条弦相等,那么( )A.这两条弦所对的弧相等B.这两条弦所对...
  7. 怎么把图片变清晰?这些方法一步就搞定!
  8. android9.0紧急号码拨号流程
  9. 用Dota2“最强”算法PPO完成CarPole和四轴飞行器悬浮任务
  10. 两个方法:教你快速免费合并多个PDF文件