`

关于MVC模式及其优缺点

阅读更多
MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开。将一个应用程序分为三个部分:Model,View,Controller。
具体的话就是:
视图
  视图就是负责跟用户交互的界面。一般就是由HTML,css元素组成的界面,当然现在还有一些像js,ajax,flex一些也都属于视图层。 在视图层里没有真正的处理发生,之负责数据输出,并允许用户操纵的方式。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。
模型
Model代表一些应用数据和业务逻辑(一般通过通过javaBean,EJB之间实现)在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和javabean这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器
  控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

这样强制性的分开之后会有很多的优点
第一个:分工明确:使用MVC可以把数据库开发,程序业务逻辑开发,页面开发分开,每一层都具有相同的特征,方便以后的代码维护。它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

第二个:就是松耦合,视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
这一点我感觉比较重要,像实际应用的时候,我们还会把model模块细分为:数据库抽象层,数据操作层,业务逻辑层。这些也都是出于一个送耦合的考虑,改动其中一部分,不会影响到另一部分。

第三个:重用性高。像多个视图能够共享一个模型,不论你视图层是用flash界面或是wap界面,用一个模型就能处理他们。将数据和业务规则从表示层分开,就可以最大化从用代码。

用简单的jsp servlet 和javabean来举个注册的例子来说的话:首先是视图层注册的jsp文件,用户填写完用户信息后,提交一个请求,这个请求同过配置文件找到相应的servlet,servlet就相当于控制器,根据不同的用户请求类型,进而调用不用的业务逻辑层进行处理。处理完成之后又将结构信息反馈给jsp文件也就是视图层文件。最最简单的mvc大体上就是这个流程了。

不过MVC也有一定的缺点
 MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
   你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。
  根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。
  MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
   总之,不要为了MVC而MVC就行了。
分享到:
评论

相关推荐

    MVC设计模式概念及优缺点

    ### MVC设计模式概念及优缺点 #### 一、MVC设计模式的概念 MVC(Model-View-Controller)设计模式是一种广泛应用于软件工程中的架构模式,尤其在Web开发领域非常流行。该模式的核心理念在于将应用程序划分为三个...

    Mvc的优缺点.txt

    1. **清晰的分层结构**:MVC模式通过明确地将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,使得每个组件都有明确的职责范围。这种分层结构有助于开发者更好地理解和管理复杂的系统。 ...

    MVC模式在Java Web开发中的应用及实现.pdf

    在探讨MVC模式在Java Web开发中的应用和实现时,首先需要了解MVC模式的基本概念及其在软件开发中的重要性。MVC设计模式是一种将软件应用程序划分为三个主要组件——模型(Model)、视图(View)和控制器(Controller...

    j2me-mvc 模式思想

    #### 二、MVC模式的优缺点 ##### 优点: 1. **模块化**:通过将应用程序划分为模型、视图和控制器三个独立的部分,MVC模式使得不同的团队可以专注于各自的专业领域,提高了开发效率和协作能力。 2. **灵活性**:当...

    基于MVC模式的web开发框架研究(毕业论文).

    本研究旨在深入探讨MVC设计模式的结构、优缺点及其在J2EE平台的应用实践,并在此基础上提出了一种新型的WEB应用开发框架——WebFramework。 #### MVC设计模式概述 MVC(Model-View-Controller)设计模式是一种经典...

    论PHP框架设计模式及MVC的缺陷

    这篇文章将深入探讨PHP框架中的设计模式以及MVC模式的优缺点,同时结合提供的"framework.txt"文件,我们可以进一步理解这些概念。 首先,让我们了解设计模式。设计模式是软件设计中的一种通用解决方案,它是在特定...

    基于MVC设计模式的WEB应用框架研究

    【MVC设计模式详解及其在Web应用框架中的应用】 MVC(Model-View-Controller)设计模式是软件工程中一种广泛应用于...对于开发者来说,理解和掌握MVC模式及其在不同框架中的应用,是提升开发能力和优化Web应用的关键。

    基于MVC 模式的员工管理系统.pdf

    #### 二、Java语言及其与MVC模式的结合 Java是一种广泛使用的面向对象编程语言,以其跨平台性和强大的安全性而闻名。在本毕业设计项目中,作者选择了Java作为主要的开发语言,利用其与MVC模式的天然契合,构建了一...

    mvc研究的综述

    本文旨在对MVC模式进行全面深入的研究综述,探讨其起源、结构、设计方法、实现技术、优缺点及应用,并特别介绍基于JSP、Servlet和JavaBeans实现的MVC2结构。 #### 二、MVC模式的起源与发展 MVC模式最早出现在20...

    .NET平台下MVC设计模式的实现

    MVC模式最初源于J2EE平台,但随着.NET的发展,这种模式在.NET环境中的应用也越来越受到开发者的重视。MVC模式能够有效提高应用程序的可维护性和扩展性,简化复杂系统的开发过程。 #### MVC的基本概念 MVC设计模式...

    Spring的优缺点及工作原理

    ### Spring的优缺点及工作原理 #### Spring框架概述 Spring框架是Java平台上最受欢迎的企业级应用程序开发框架之一。它提供了一套全面的编程和配置模型,旨在简化企业级应用的开发。Spring的核心特性主要包括依赖...

    M-V-C 模式

    #### 四、MVC模式的优缺点 ##### 优点 - **易于维护**: 各个组件之间相对独立,降低了系统各部分之间的耦合度。 - **可扩展性强**: 新增或修改功能时只需要关注相应的组件即可。 - **便于分工协作**: 不同的开发者...

    mvc开发的概念及原理

    MVC模式的主要目标是实现Web系统的职责分离,提高代码的可维护性和可扩展性。 **MVC组成部分详解** 1. **模型(Model)**:模型是应用程序的核心,负责处理业务逻辑和数据管理。模型对象与数据源交互,如数据库、...

    MVC设计模式中视图层的改进.pdf

    本文将从MVC设计模式的概述、视图层技术概述、挑战及改进等方面进行探讨。 MVC设计模式概述 MVC设计模式是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式。该模式将应用程序分为三个层次...

    PureMVC框架学习总结

    然而,MVC模式也存在一些缺点: 1. M、V、C三者难以清晰划分,尤其在小型项目中,过度的划分会增加开发复杂性; 2. 细化划分带来的副作用是工作目录和代码文件的增多,可能会增加项目的负担; 3. MVC传统的层级依赖...

    ASP.NET MVC-01-框架概述

    #### 一、MVC模式简介 MVC模式,全称为Model-View-Controller模式,是一种软件架构设计模式,最初由Trygve Reenskaug在20世纪70年代末期为Smalltalk平台提出。它主要用于简化程序结构,提高代码的复用性和维护性。 ...

    ssh框架的介绍以及优缺点

    ### SSH框架介绍及其优缺点 #### 一、SSH框架概述 SSH框架是Java Web开发领域中非常流行的一个组合,它由三个独立但又相互协作的部分组成:Struts、Spring 和 Hibernate。这三个技术分别解决了Web应用开发中的不同...

Global site tag (gtag.js) - Google Analytics