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使用的困难。

原文地址:https://www.cnblogs.com/yixiao21/p/8424029.html

时间: 2024-08-29 21:53:40

MVC原理和MVC模式的优缺点的相关文章

MVC单元测试,使用Repository模式、Ninject、Moq

本篇使用Repository设计MVC项目,使用Ninject作为DI容器,借助Moq进行单元测试. 模型和EF上下文 模型很简单: public class Foo { public int Id { get; set; } public string Name { get; set; } } EF上下文为: using System.Data.Entity; namespace MvcApplication1.Models { public class FooBarContext : DbC

从MVC框架看MVC架构的设计

转自:http://blog.csdn.net/bluishglc/article/details/6690693 从MVC框架看MVC架构的设计 尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些问题的,揭示其中所折射出的设计思想与设计理念. MVC回顾   作为一种经典到不能再经典的架构模式,MVC的成功有其必然的道理,这个道理不同的人会有不同

Webform和MVC,为什么MVC更好一些?

前言 如果你看了最近微软的议程,你会发现他们现在的焦点除了MVC,还是MVC.问题在于为什么微软如此热衷于丢弃传统的ASP.NET Webform而转向ASP.NET MVC?本文就主要来讨论这个问题. ASP.NET Webform 后台代码(behind code)—— 福音与诅咒 如果你密切关注过ASP.NET Webform技术,你会发现它更接近可视化设计,换句话说,开发者只需要从设计面板中拖拽控件即可完成UI,接着在behind code中实现逻辑代码即可完成最后的Web页面功能. 所

【ASP.Net MVC】AspNet Mvc一些总结

AspNet Mvc一些总结 RestaurantReview.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text.RegularExpressions; using System.Web; using System.Web.M

Spring MVC - 配置Spring MVC

写在前面的话: 现在开始一段新的学习历程:Spring MVC.还是按照原来的三步走学习模式(what.why.how)进行讲解. 1.Spring MVC是什么(what) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring MVC通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.Spring MVC框架围绕DispatcherServlet设计. DispatcherServl

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照

近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MVC的概念,可是由于没有项目经验的原因,所以总是停留在理论层次的比較. 在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用.DRP中我们採用jsp做View层用于显示:Servlet做Controller用于取得表单參数.调用业务逻辑.转向页面: 相同都是M

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对比

最近在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于以前的.NET项目大多数都是利用三层开发的,所以大多数人都能够对三层进行熟练地运用.而项目的开始我们也曾听说过MVC的概念,但是因为没有项目经验的原因,所以总是停留在理论层次的比较. 在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用.DRP中我们采用jsp做View层用于显示:Servlet做Controller用于取得表单参数.调用业务逻辑.转向页面: 同样都是M

mvc模型和mvc框架的区别

Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女人忠诚多了. 在这里我们来说侃下MVC吧!嗯!MVC设计模型和MVC框架之区别. 一组概念需要先理解,因为后面需要用:   架构:简单的说架构就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并且能够描述这些抽象组件之间的通信和调用.   框架:软件框架是项目软件开发过程中提取特定领域

【Spring MVC】Spring MVC,阻止直接访问jsp,使用Interceptor登录拦截

问题描述: 在Java Web项目中,用户可访问Url一般只有一个,即index或login.而用户的其他Url请求都会引导到index页.如何来避免未登录用户直接访问Spring的Conroller和jsp文件? 解决方案: 一.阻止用户访问jsp. Spring的MVC模式是不提倡直接通过URL形式访问.jsp页面的,建议通过Controller跳转至View页面. 把jsp文件放在WEB-INF目录下,js和css等资源文件放在WEB-INF的同级目录下,WEB-INF对用户不可见,可以起