`
youngJava
  • 浏览: 15679 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多
一、 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的困难。





分享到:
评论

相关推荐

    ASP.NET MVC 3高级编程

    1.1.9 asp.net mvc 3特性总结 10 1.2 创建asp.net mvc 3应用程序 10 1.2.1 创建asp.net mvc 3应用程序的软件要求 11 1.2.2 安装asp.net mvc 3 11 1.2.3 创建asp.net mvc 3应用程序 12 1.2.4 new asp.net mvc 3 ...

    利用MVC模式开发Java应用程序

    北京Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大... MVC模式介绍 模型-视图-控制器(Model-View-Controller,MVC)模式就是为那些需要为同样的数据提供多个视图

    Vue面试题总结.pdf

    总结一份vue面试经,内容由浅至深来总结vue相关的重点知识,以及面试官提问概率较高的专业问题,结合面试题去文档进行了解与学习可以大幅度提高面试经验。 下面简单介绍一下vue: vue是一个用于创建用户界面的开源...

    review.struts.zip

    struts 简单总结的附件 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在...

    ASP.NET+SQL房地产管理系统设计与实现(+源代码+thesis+任务书+工作总结+replyPPT).zip

    ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加...

    JavaWeb设计客户信息管理系统(报告)

    Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 (2)开发工具 windows7,eclispe,jdk1.7,tomcat7.0...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的...

    Java语言基础下载

    内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented) 16 面向对象的主要特性 18 抽象(Abstraction) 18 封装(Encapsulation): 19 多态(Polymorphism) 20 面向对象的优点 22 ...

    ASP.NET4高级程序设计(第4版) 3/3

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 作者简介 作者:(美)麦克唐纳 目录 第一部分 核心概念 第1章 ASP.NET简介 ...

    java-ee电子商城系统课程设计.doc

    Struts 是目前创建Web 应用最常用的表现层MVC 框架实现,基于Model2 的Struts 框架利用控制器和定制标签库将应用中的模型和视图分离,达到了层间松散耦合的效果 ,同时提高系统的灵活性、重用性和维护性。...

    涵盖了90%以上的面试题

    什么是MVC模型 TCP的连接和释放过程 什么是长连接和短连接 长连接是如何实现的 计算机网络体系结构 谈谈你对Struts的理解。 谈谈你对Hibernate的理解。 谈谈你对Lucene和solr的理解 谈谈你对ActiveMQ的理解 Spring的...

    IRIS-RoR-Bootcamp-2020

    在第二部分中,我们将进一步研究MVC体系结构模型,并讨论数据库,迁移和使用记录的问题。在第三次会议中,我们采取的MVC架构的控制器定睛一看,谈控制器,路由,认证和授权。 在作业中,我们将建立一个简单的博客...

    java 面试题 总结

    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

    Knockout API 中文版

    简单来说:声明你的数据作为一个JavaScript 模型对象(model object),然后将DOM 元素或者模板(templates)绑定到它上面. The quickest and most fun way to get started is by working through the interactive ...

    java版商城源码下载-myjeesite:jeesit自己修改和使用过的总结

    MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎。是JavaEE界的最佳整合。 JeeSite主要定位于企业信息化领域,已内置企业信息化系统的基础...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    文献综述 摘 要 Web开发技术和Web开发框架整合实践研究是这个时代的一个热点,本文在参阅国内 外Web开发技术和Web开发框架及主要几个框架相关文献的基础上,对Web开发框架研究作 了较为全面的总结和梳理,并结合Web...

    Spring.3.x企业应用开发实战(完整版).part2

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

Global site tag (gtag.js) - Google Analytics