MVC方式通常在Smalltalk中用于建立用户接口。通过对MVC中蕴藏的设计模式可以帮你理解我们所说的“模式”的含义。
MVC包括三类对象,Model是应用对象、View为其屏幕表示、Controller定义了对用户输入的处理(反应)方式。在应用MVC方式以前,通常将这三个对象的功能合到了一起,应用MVC分离了它们,为设计提供了灵活性和可重用性。
MVC通过在view和model之间建立Subscribe/Notify协议,分离了view和model对象。View对象必须保证它的表示反应了model对象的状态,当model对象的数据改变时,model对象通知(Notify)view对象,作为对这一行为的反应,每个view对象得到了一个做出更新的机会。这种方式使得可以将多个view对象为一个model对象提供不同的表示。你也可以为model对象建立新的view对象,而不用重新编写model。下图演示了一个model和三个view:
从表面看,这一例子反应了一个将view和model分离的设计。然而,这种设计适合一类更通用的问题:减少对象之间的藕和性,这样,当一个对象改变时,将不会影响到另外的对象,甚至不需要知道另外的对象的实现细节。这种更通用的模式将在Observer模式中来描述。
MVC方式的另一个特点是,view对象是可嵌套定义的。例如,button的控制板可由一个包含嵌套button view对象的复杂view对象来实现;对象观察器的用户接口可由能重用于调试器的嵌套view对象组成。MVC方式采用CompositeView类(View的子类)来支持嵌套view,其行为与view对象的行为一致,可用于view对象能使用的任何场合。
于是,我们又可以把这种对待composite view就像处理其一个组件的方式看成一种设计(方式)。同样的,这种设计可抽象出另一类更通用的问题(的解决方式):我们在某种情形下将对象分成组,并且处理一个组就像对待对象个体。这种方式我们用Composite设计模式来描述。它允许你建立类的层次,在这一层次下,有些子类定义原始对象(如Button),而其它的类可以定义合成对象(CompositeView),合成对象可将原始对象装配成更复杂的对象。
同样,MVC也可改变视图类(view)对用户反应的方式,而不用改变其可视化表示。你可能想改变其对键盘响应的方式,如,使用弹出菜单代替命令键。MVC将这种反应机制封装为控制对象(Controller)。控制器有一个类层次,易于实现从一个已存在的控制器建立出一个变种—一种新的控制器。
视图(view)对象通过某一控制器对象的实例(instance)来实现特定的响应策略。为了实现不同的策略,可以简单的使用不同的控制器实例来替换当前的实例。甚至可以在运行时来改变视图的控制器,以改变视图对象对用户输入的响应(策略)。例如,一个view对象可置为disabled,即对用户的输入不做任何响应。要达到这一目的,仅仅只需让控制器忽略所有input事件。
这种视图—控制器关系即是Strategy设计模式的一个典型例子。所谓Strategy即这样一个对象,它表示了一种算法。这在你想要替换算法(无论是静态替换还是动态替换)时特别有用,而这样的算法可能有许多的变量、或者拥有复杂的数据结构。
MVC中也使用了别的设计模式,例如,使用Factory Method模式来描述视图的默认控制器类;采用Decorator模式来为视图增加滚动条等。但在MVC中的主要模式是前述的Observer、Composite、和Strategy设计模式。
分享到:
相关推荐
Struts是一个基于MVC模式的开源Java Web框架,它简化了Java Web应用程序的开发。在Struts中: - **ActionServlet**:作为控制器,处理HTTP请求,并调用相应的Action。 - **Action**:实现了特定业务逻辑的类,相当...
Struts框架以其强大的MVC模式实现能力和丰富的特性,成为Java Web应用开发领域的重要工具之一。通过本篇文章的学习,我们不仅了解了Struts框架的基本原理,还通过具体的案例深入了解了如何利用Struts框架快速构建高...
通过详细解析MVC模式的基本原理以及Struts框架的核心组成部分,本文旨在帮助开发者更好地理解和应用这一框架。 #### MVC设计模式详解 MVC设计模式最初由Xerox PARC在上世纪80年代为编程语言Smalltalk-80所发明,其...
总结而言,MVC是一种设计模式,旨在实现软件设计的低耦合和高重用性,而Struts2是一个基于MVC模式的Web应用框架,通过其独特的拦截器技术和标签库简化了Web应用的开发过程。Struts2的出现,是对传统MVC模式的一种...
这些知识将帮助开发者更好地理解和使用MVC和Struts2,构建高效、健壮的Web应用。 总之,ACCP 5.0 Y2课程中的MVC和Struts2部分涵盖了Web开发的重要概念和技术。理解并熟练运用MVC模式、Struts2框架、Spring框架以及...
总的来说,Struts2通过MVC模式将Web应用的各部分职责划分清晰,提供了一套完整的控制流程和灵活的配置机制,使得开发者能够专注于业务逻辑的实现,提高开发效率。同时,源码的开源性和丰富的开发工具进一步支持了...
此外,UML建模技术的应用也有助于更好地理解和规划系统的整体结构。 ### 总结 本研究详细介绍了基于MVC模式的博客系统的开发过程,包括系统的架构设计、关键功能模块的设计以及所使用的开发技术和工具。通过采用...
【标题】"jsp论坛MVC模式struts hibernate mysql"是一个基于Java技术的Web应用程序,旨在帮助开发者理解和实践MVC(Model-View-Controller)设计模式。在这个项目中,主要的技术栈包括Struts1.1作为控制器框架,...
5. **可维护性**:清晰的结构和明确的职责划分,使得代码更易于理解和修改,提高了软件的可维护性。 6. **有利于软件工程化管理**:MVC模式的规范化和标准化,有助于项目管理和团队协作,提升了软件开发的工程化...
自定义Struts 2 MVC框架的过程有助于深入理解其工作原理,从而更好地应用和优化项目。 首先,我们来详细探讨Struts 2的核心组件和它们的角色: 1. **模型(Model)**:模型是应用的核心,负责处理业务逻辑和数据。在...
MVC是一种常见的设计模式,用于分离业务逻辑、数据处理和用户界面,而Struts则是一个基于Java的开源Web应用框架,它对MVC模式进行了进一步的封装和扩展,以简化开发流程。 **描述分析:** 描述中提到,我们将从一个...
本文将从多个角度对比分析两种基于MVC模式的Java Web框架——JSF(JavaServer Faces)和Struts。 #### 二、JSF与Struts的基本概念 ##### 1. Struts框架介绍 Struts是Apache组织提供的一款开源Web应用框架,最初...
MVC模式是一种将业务逻辑、数据和用户界面分离的设计思想,使得开发、测试和维护变得更加容易。在Struts框架中,每个部分都有其特定的角色: 1. **Model**(模型):模型层主要负责处理业务逻辑和数据管理。在...
Struts MVC是一个基于Java平台的模型-视图-控制器(MVC)框架,它在Web应用开发中扮演着核心角色,特别是在构建复杂的企业...通过分析源码和配置,可以深入理解MVC模式在实际项目中的应用,以及Struts框架的工作原理。
MVC模式是软件工程中一种用于分离业务逻辑、数据和用户界面的设计模式。在Struts1中,Model代表应用程序的数据和业务逻辑,View负责展示用户界面,而Controller处理用户的请求并协调Model和View之间的交互。 **2. ...
通过理解和掌握其工作原理及源代码,开发者可以更好地在现有Struts项目中引入Spring,提升应用的可维护性和扩展性。在实际开发过程中,这不仅可以降低维护成本,还能使项目更容易适应不断变化的业务需求。
总的来说,这个登录例题展示了如何利用Struts框架实现MVC模式的基本流程,通过实践可以帮助开发者更深入地理解Struts的工作原理和MVC设计模式的应用。在学习过程中,还可以探索更多高级特性,如拦截器(Interceptors...
Struts1是一个经典的Java Web开发框架,它遵循MVC(Model-View-Controller)设计模式,使得开发者可以更有序地组织代码,提高开发...在实际开发中,理解并熟练运用MVC模式能够帮助你构建更加清晰、易于维护的项目架构。
通过研究这些源代码,你可以深入理解Struts和Hibernate如何协同工作,以及如何在实际项目中应用MVC模式来组织和管理Java Web应用程序。同时,这也为学习和提升Java Web开发技能提供了宝贵的实践资源。
在J2EE项目中使用Struts对MVC模式的研究与实现这一主题,深入探讨了Struts框架在Web应用程序开发中的应用及其对MVC设计模式的支持。以下是对标题、描述及部分文档内容中提及的关键知识点的详细阐述: ### Struts...