一、 MVC模型的简单介绍
MVC模型源自于传统的面向对象语言Smalltalk,首先被应用在Smalltalk-80环境中,是许多交互和界面系统的构成基础。MVC结构是为那些需要为同样的数据提供多个视图的应用程序设计的,它很好的实现了数据层和表示层的分离。MVC作为一种开发模型,通常用于分布式系统的设计和分析中,以及用于确定系统各部分之间的组织关系。
根据模块的用途和界面设计可变性的需求,MVC把交互系统的组成分解成模型、视图、控制器三层。这三层的分离使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据的变化,控制器都将变化通知所有的视图,导致显示的更新。
模型层(Model) : 业务逻辑模块,表示应用领域有关的类别、物体、数据结构以及企业业务逻辑等。通常,Model是企业业务流程的软件近似模型,所以,在定义Model时只需对企业业务流程中的对象进行合理抽象、封装对象的属性和对象隐含的业务逻辑即可。
视图层(View): 用户视图模块,一方面,它为用户提供了输入手段,并触发Controller运行;另一方面,它通过Model访问企业数据,并用某方式显示这些数据。同时,当Model 变化时,它做出相应变化。用两种方法之一:Push(推)模式,让View在Model处注册,以便在Model变化时获得提醒;Pull(拉)模式,View在需要获得最新数据时调用Model。
控制层(Controller:) 流程控制模块,将用户与View的交互转换为基于应用程序行为的标准业务事件,再将标准业务事件解析为Model应执行的动作。Model执行的动作包括激活业务逻辑和改变Model的状态。根据用户交互信息和Model执行动作的结果,Controller选择一个合适的View.展现给客户。
传统的MVC模型只是从概念上将视图从流程控制、业务逻辑独立出来,并定义了相互间作用的机制,使各个模块的开发相对独立,但是它没有针对不同视图类型,解决流程控制等对象的统一问题。
二、 MVC模型的优点
1. 低耦合性,视图层和业务层的分离,可以使得更改视图层的代码而不用重新编译模型和 控制器代码。三层分离,又增加了程序设计的灵活性,当一个应用的业务流程或者业务规则需要改变时只需改动MVC的模型层,而界面表现的改变只需改动MVC的视图层。
2. MVC的三层分离可以让不同的开发者负责不同的模块,就可以分工,分工就可以快速部署,就可以提高效率,相当大的缩短开发时间,按照传统的责任划分来处理软件开发过程,使开发者专心于一个领域,从而极大地提高了软件的开发效率,也因此,MVC模型适合于团队开发。
3. 高重用性和可试性,MVC模式允许使用各种不同样式的视图来访问同一个服务器的代码,包括任何WEB(HTTP)浏览器或者无线浏览器(WAP)。
4. 可维护性,三层的分离使得WEB应用更易于维护和修改。
5. 较低的生命周期成本。
6. 有利于软件工程化管理,不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于工程化、工具化管理程序代码。
7. 模型的部分,因为足够抽象,可以方便地重复利用,另一方面利用单元测试工具对模型进行单元测试,保证工程质量。
三、 MVC模型的缺点
1. 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图和控制器分离,会增加结构的复杂性,并肯能产生过多的更新操作,降低运行效率。
2. 视图与控制器过于紧密的连接。视图与控制器是相互分离的,但却又是联系紧密的部件,视图没有控制器的存在,其应用是有限的,反之亦然,这就妨碍了他们的独立重用。
3. 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对为变化数据的不必要的频繁访问,也将损害操作。
4. MVC模式应用于J2ME上增大了代码体积。据不完全统计,使用了MVC模式后,代码体积约是不是用的1.5倍,这对于存储容量十分有限的移动设备是致命的。
5. MVC的3个定义不是很具体,对于3个部件的具体功能还存在着一些争议,给初学者留下不少陷阱,加大了使用MVC模式的难度。
6. 目前,一般高级的界面工具或构造器不支持MVC模式,改造这些工具一适应MVC需要和建立分离的部件的代价很高,从而也造成了使用MVC的困难。
分享到:
相关推荐
**Java的MVC模型案例详解** 在软件开发领域,Model-View-Controller(MVC)是一种广泛采用的设计模式,尤其在Web应用开发中。MVC将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),...
**MVC(Model-View-Controller)模式是软件开发中...总结,这个"MVC简单例子C#"涵盖了C#编程语言和MVC设计模式在Web开发中的应用,通过理解和实践这个例子,你可以更好地掌握如何在C#环境下构建高效、可维护的Web应用。
压缩包中的"SimpleDraw.exe"可能是一个简单的MVC应用程序示例,演示了如何在图形用户界面中应用MVC模式。"MVC.PPT"可能是关于MVC模式的演示文稿,进一步阐述了概念和实践。"MVC-模版1"和"MVC-模版2"可能包含了两种...
- 性能影响:对于简单的应用,MVC可能会引入不必要的性能开销。 3. **MVC3.0新特性** - **Razor视图引擎**: Razor是一种简洁且高效的视图引擎,它提供了直观的语法来编写视图,简化了HTML的生成过程。 - **支持...
总结,这个“jsp mvc实现简单BBS”项目是一个基础的在线讨论平台,展示了如何运用JSP和Servlet实现MVC模式,以及基础的BBS功能。在实践中,我们可以不断学习和引入更多先进的技术,以提高系统的稳定性和用户体验。
总结,C++的MVC模式为开发者提供了一种结构化的方式去组织和管理GUI应用程序,使代码更易维护和扩展。在C++/MFC环境下,可以通过消息映射和事件处理来实现MVC模式,确保模型、视图和控制器之间的良好协作。通过理解...
它提供了简单的MVC实现,易于理解和上手。 - **Yii** 是一个高性能的框架,支持MVC、DAO/ActiveRecord、I18N/L10N、缓存、身份验证和基于角色的访问控制等特性。 **MVC的优势** 1. **分离关注点**:MVC模式使...
MVC模式通过分离关注点,使得开发者可以独立地修改或扩展模型、视图和控制器,从而降低了复杂性,提高了代码的可重用性和可测试性。在JSP/Servlet环境中,MVC模式有效地组织了应用程序的各个部分,使得开发和维护...
总结,这个简单的MVC实例为我们提供了一个理解MVC模式如何应用于实际项目中的示例,尤其是对于初学者来说,它能帮助我们更好地掌握J2EE环境下的MVC架构,从而提升我们的Web开发技能。通过分析stu.sql和Student,我们...
总结来说,这个简单的MVC框架例子展示了如何使用JavaBean、Servlet和JSP来构建一个基本的Web应用。这种架构有助于分离关注点,使代码更易于维护和扩展。在实际项目中,更复杂的MVC框架,如Spring MVC,会提供更丰富...
### 基于ASP.NET MVC 3的企业应用项目总结 #### 一、项目背景与概况 本项目是一次采用ASP.NET MVC 3框架构建的企业级应用程序的开发经历。项目历时约三个月,期间不仅实现了功能需求,还克服了诸多技术挑战。作为...
视图不包含业务逻辑,只是简单地显示模型的数据。当用户与视图交互(例如点击按钮或填写表单)时,视图会将这些交互传递给控制器处理。 **控制器(Controller)** 控制器作为模型和视图之间的协调者,接收来自视图...
总结来说,这个案例展示了如何使用MVC架构和一系列技术构建一个Web应用。通过解耦模型、视图和控制器,使得代码更易于维护和扩展,同时利用各种工具和框架提高开发效率。理解和实践这样的案例对于提升Java Web开发...
总结来说,这个基于MVC的学生管理系统是一个典型的J2EE项目,它涵盖了Web开发的多个核心概念,包括MVC设计模式、数据库操作、用户界面设计以及服务器部署。通过学习和实践这样的系统,开发者可以深化对J2EE架构的...
由于MVC架构的解耦特性,编写单元测试和集成测试变得相对简单。你可以针对控制器、模型和视图助手编写测试,确保每个组件按预期工作,提高软件质量。 ** Areas 和多层应用结构** 大型项目可能需要更复杂的结构。...
总结,MVC模式是一种强大的设计模式,有助于组织复杂Web应用的结构。"最简单的mvc小实例"是一个理想的学习工具,可以帮助初学者快速掌握MVC的基本原理和实践技巧。通过实际操作和分析代码,可以更好地理解和运用这一...
**简单MVC实例详解** ...总结,简单MVC实例展示了如何在VS2013中构建一个基础的MVC应用程序。通过理解模型、视图和控制器的角色,我们可以更有效地组织代码,实现清晰的职责划分,从而创建出易于维护和扩展的Web应用。
总结来说,Spring MVC提供了一种强大的方式来构建Web应用程序,它的注解驱动和模块化设计使得开发过程更加简洁和高效。通过阅读源码和实践,开发者可以深入理解其工作原理,从而更好地利用这个框架。
总结来说,这个项目展示了如何利用MVC模式构建一个简单的在线购物车系统,其中JSP作为视图层,自定义标签实现了分页功能,而购物车的核心逻辑则在模型层中处理。通过这样的设计,项目保持了良好的结构和可维护性,...