mvc原理和mvc模式的优缺点

一、mvc原理 
  mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。 
1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型 与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性 
2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成 
3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用

二、MVC的优点 
1、可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 
2、视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 
3、模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 
4、潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。

三、MVC的不足之处 
1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 
2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 
3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 
4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

mvc原理和mvc模式的优缺点相关推荐

  1. MVC+LINQToSQL的Repository模式之(二)数据基类

    namespace Data.TEST {     /// <summary>     /// 数据操作基类     /// </summary>     public abs ...

  2. php cli python,PHP MVC框架 CodeIgniter CLI模式简介

    PHP MVC框架 CodeIgniter CLI模式简介 分类:PHP_Python| 发布:佚名| 查看: | 发表时间:2014/7/25 让我们以Hello World为例,首先创建一个简单的 ...

  3. MVC三层架构的模式

    大家好,今天给大家分享一下MVC 三层架构的模式 首先你要知道,所谓的MVC就是一种面向于javaee企业级开发的设计模式 这里要强调一点,MVC 不是一种技术,不是一种像spring 那样的框架,它 ...

  4. 基于MVC模型和分层模式完成登录和注册

    1.MVC概述 Model.view.Controller即模型.视图.控制器.是软件的一种架构模式(Architecture pattern).MVC要实现的目标是将软件的用户界面和业务逻辑分离,可 ...

  5. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向...

    [.net 面向对象程序设计深入](4)MVC 6 --谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  6. Spring MVC - 配置Spring MVC

    写在前面的话: 现在开始一段新的学习历程:Spring MVC.还是按照原来的三步走学习模式(what.why.how)进行讲解. 1.Spring MVC是什么(what) Spring MVC属于 ...

  7. mvc中的mvc分别指什么_什么是MVC,它像三明治店吗?

    mvc中的mvc分别指什么 by Adam Wattis 通过亚当·沃蒂斯(Adam Wattis) 什么是MVC,它像三明治店吗? (What is MVC, and how is it like ...

  8. [MVC]Asp.net MVC中的Session

    [MVC]Asp.net MVC中的Session 2008年12月9日 分类: ASP.NET, ASP.NET MVC, C#, 开发笔记 最近使用ASP.NET MVC 中的Controller ...

  9. java mvc mvvm_从MVC到MVVM(为什么要用vue)

    axios 功能类似于jQuery.ajax. axios.post() axios.get() axios.put() axios.patch() axios.delete() 比jQuery.aj ...

最新文章

  1. pangolin最新版 v2.5.2.975
  2. 重学深度学习系列-回归
  3. 编译安装openresty+mysql+php7
  4. linux版本的edge多网页标签(tag)不见了咋办
  5. 如何在手机上打开xmind文件_xmind在手机上怎么操作
  6. Win10系统配置Python3.6+OpenGL环境详细步骤
  7. wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
  8. DirectX 11
  9. Win11电脑怎么开启色盲模式
  10. 微信小程序,小游戏数据助手数据爬取!还敢随便授权小游戏吗?
  11. 使用ResNet-50实现图像分类任务
  12. 苹果输入法怎么换行_朋友圈不折叠的N种方法安卓苹果通用
  13. java解压缩zip、rar
  14. 直播系统定制开发中安卓直播间websocket协议破解还原
  15. 点名器实现的随机原理(实现随机点名器)
  16. FL Studio20.8完整版注册密钥下载有哪些新功能?
  17. CSS基础(3)- 选择器
  18. win10下载备忘录
  19. RFID复习笔记(4)——RFID的射频前端
  20. 当智能汽车变成一个超级计算机,传统车厂还有机会吗?

热门文章

  1. 最好用的开源日志分析工具
  2. 3S基础知识:VC6.0+MapX编程总结
  3. 计算机毕业设计ssm高校学生社团管理系统n4pcu系统+程序+源码+lw+远程部署
  4. 基于Markdown 搭建自己的博客,哪个工具好?
  5. 极速office怎么才能自定义PPT幻灯片大小
  6. Linux中误删文件的恢复方法
  7. android源代码下载
  8. Java 监控方案_Java 服务端监控方案
  9. linux命令之unzip
  10. 智慧工地管理平台系统赋能建筑工地绿色施工