- 浏览: 103077 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
Composite View(复合视图)
Composite View模式又称复合视图模式,它建议将复杂的视图分解成多个原子子视图,这些子视图可以被动态地组合进整个页面或排版。
Composite View模式介绍
我们从问题,解决方法,策略,优点等几个方面介绍Composite View模式。最后给出Composite View的相关联结。
问题
WEB应用中可能存在以下页面:
- 页面内容的一部分需要修改频繁
- 多个页面中存在相同或相似的内容
- 多个页面具有相同或相似的排版
等。
对于以上页面,如果把页面内容代码分散到各个页面视图中,将存在以下问题:
- 页面内容的修改将导致多个页面视图的同时修改。
- 页面排版的可维护性和可修改性低。如果需要修改页面排版,则需同时修改所有页面视图的代码。
解决方法
Use composite views that are composed of multiple atomic subviews. Each component of the template may be included dynamically into the whole and the layout of the page may be managed independently of the content.
使用由多个原子子视图构成的复合视图。每个子视图能被动态包含进整个页面,页面的排版可以独立于页面内容(亦即,即使修改了页面的排版也不会影响到页面的内容)。
如图:
图1,页面的排版可以由页眉(Header),左(Left),中(Contents),右(Right),页脚(Footer)几部分构成,每一部分都可以作为一个子视图,可以被动态包含。
结构图:
复合视图(CompositeView)和子视图(HeaderView等)可以有一个共通的父类,复合视图包含多个子视图。
具体使用时一般引入ViewManager(视图管理器)来管理视图。标准JSP里的<jsp:include>标签就相当于一个ViewManager。
策略
Composite View模式有多种实现策略:
JSP View Strategy
JSP作为View。
Servlet View Strategy
Servlet作为View。
JavaBean View Management Strategy
使用JavaBean 管理视图的策略
Standard Tag View Management Strategy
使用JSP标准提供的标签管理视图的策略。一般是指使用:<%@ include %>与<jsp:include>标签来包含静态HTML文件或动态的JSP文件。
Custom Tag View Management Strategy
使用自定义标签管理视图的策略。比如JSF里的<f:subview />标签,Tiles框架里提供的标签等。这种策略因为可以由用户自由定义和控制,比较灵活,功能也比较强大。
Transformer View Management Strategy
XSL Transformer作为ViewManager
Early-Binding Resource Strategy
早绑定或静态绑定。
Late-Binding Resource Strategy
晚绑定或动态运行时绑定
优点:
使用Composite View模式有以下好处:
视图模块化,模板化,可重用性,可维护性,柔软性高。
相关模式
View Helper
Composite View可以作为View Helper中的view。
Composite [GoF]
Composite View基于GoF的Composite模式
参考资料:
Core J2EE Pattern Catalog
Core J2EE Patterns - Composite View
Dispatcher View(视图转发器)
Dispatcher View模式是一个复合模式,它在Front Controller与View之间增加一个Dispatcher组件,Dispatcher组件负责管理view以及页面导航。
Dispatcher View模式介绍
我们从问题,解决方法,策略,优点等几个方面介绍Dispatcher View模式。最后给出Dispatcher View的相关联结。
问题
我们使用Front Controller模式对客户请求作集中管理,以及处理某些共通的事务等;使用View Helper模式以分开表示逻辑与业务逻辑。Dispatcher View模式解决同时使用Front Controller和View Helper时(往往都是同时使用)存在的问题。没有组件对权限控制,表示内容的取得,view的管理做集中管理;在各个view里存在重复的控制代码等。特别地,由于view中混在着业务逻辑与表示代码,使得系统变成一个低可扩展,低可重用的系统,也很难应对各种变化(客户需求发生变化时,很难得到修改)。
同时表示逻辑与业务逻辑的混杂,极大地降低了模块的封闭性,不利于角色的分配,影响WEB开发的生产性。
解决方法
Combine a controller and dispatcher with views and helpers to handle client requests and prepare a dynamic presentation as the response. Controllers do not delegate content retrieval to helpers, because these activities are deferred to the time of view processing. A dispatcher is responsible for view management and navigation and can be encapsulated either within a controller, a view, or a separate component.
组合Controller,Dispatcher与view以及Helper,由它们共同处理来自客户端的请求(request)。
Controller起控制器的作用,它是所有请求的入口,view负责表示逻辑,Helper负责(或者调用)业务处理逻辑,Dispatcher对view进行管理。
如图:
图1,结构图
图2,职责图
Controller
Request的入口,它一般处理权限管理,认证等共通事务。同时调用Dispatcher组件完成View的显示处理等。与Service to Worker不同的是,这里的Controller不再调用Helper类。
Dispatcher
负责view的管理以及页面导航(提供页面导航机制以决定下一个将要显示的视图页面),它把来自客户端的请求发送给View。与Service to Worker不同的是,这里的Dispatcher不把request转发给业务逻辑处理类,不再调用Helper类,也不再执行业务逻辑类。也就是说,这里的Dispatcher只执行最小限的处理:只对view进行管理以及进行navigation处理。Dispatcher可以被封装为一个 Controller(参考Front Controller),也可以作为一个独立的组件与Controller共同协作。该组件由于从Controller独立,便于代码的模块化。
View
负责显示逻辑。
Helper
帮助View或Controller完成它们的工作,包括为view的显示收集所需数据;以ValueBean的形式保持中间数据;连接数据库或调用其他业务逻辑处理等。一个View可以有多个Helper。
相对于Service to Worker模式,因为Dispatcher View模式的Controller与Dispatcher的责任范围被限制,不再调用业务逻辑类进行处理,所以Dispatcher View模式一般适用于比较单纯的应用。
策略
Dispatcher View模式是一个复合模式,根据它的每一个部分实现的策略的不同,有多种实现策略:
Servlet Front Strategy
前面介绍的使用Servlet做为Front Controller。
JavaServer Pages Front Strategy
前面介绍的使用JSP做为Front Controller。
JSP View Strategy
JSP作为View。
Servlet View Strategy
Servlet作为View。
JavaBean Helper Strategy
JavaBean Helper策略
Custom Tag Helper Strategy
自定义标签Helper策略
Dispatcher in Controller Strategy
Dispatcher包含在Controller的里面
Dispatcher in View Strategy
Dispatcher包含在view的里面
Transformer Helper Strategy
Helper被实现为eXtensible Stylesheet Language Transformer(XSLT)
优点:
使用Dispatcher View模式有以下好处:
- 集中控制,以及提高应用程序的模块化,可重用性,以及可维护性
- 提高角色的独立性。有利于让项目组人员分工合作,分别负责应用程序的不同部分
相关模式
Front Controller 与View Helper
Dispatcher View模式是Front Controller,dispatcher,View Helper的组合。
Service to Worker
Service to Worker是一种与Dispatcher View相似的模式,它也是在Front Controller与View Helper之间加入Dispatcher组件,但不同的是,两种模式中的组件的工作内容有些区别,Dispatcher View模式建议把页面内容的组建工作(content retrieval)分离到view的处理时,也就是说,Dispatcher View模式中的Dispatcher仅仅只完成对view的管理和navigation工作。
参考资料:
Core J2EE Pattern Catalog
Core J2EE Patterns - Dispatcher View
Service to Worker
Service to Worker模式是一个复合模式,它在Front Controller与View之间增加一个Dispatcher组件,Dispatcher组件负责管理view以及页面导航。
Service to Worker模式介绍
我们从问题,解决方法,策略,优点等几个方面介绍Service to Worker模式。最后给出Service to Worker的相关联结。
问题
我们使用Front Controller模式对客户请求作集中管理,以及处理某些共通的事务等;使用View Helper模式以分开表示逻辑与业务逻辑。Service to Worker模式解决同时使用Front Controller和View Helper时(往往都是同时使用)存在的问题。没有组件对权限控制,表示内容的取得,view的管理做集中管理;在各个view里存在重复的控制代码等。特别地,由于view中混在着业务逻辑与表示代码,使得系统变成一个低可扩展,低可重用的系统,也很难应对各种变化(客户需求发生变化时,很难得到修改)。
同时表示逻辑与业务逻辑的混杂,极大地降低了模块的封闭性,不利于角色的分配,影响WEB开发的生产性。
解决方法
Combine a controller and dispatcher with views and helpers (see "Front Controller" on page 172 and "View Helper" on page 186) to handle client requests and prepare a dynamic presentation as the response. Controllers delegate content retrieval to helpers, which manage the population of the intermediate model for the view. A dispatcher is responsible for view management and navigation and can be encapsulated either within a controller or a separate component.
组合Controller,Dispatcher与view以及Helper,由它们共同处理来自客户端的请求(request)。
Controller起控制器的作用,它是所有请求的入口,view负责表示逻辑,Helper负责业务处理逻辑,Dispatcher对view进行管理。
如图:
图1,结构图
图2,职责图
Controller
Request的入口,它一般处理权限管理,认证等共通事务。同时调用Dispatcher组件完成View的显示处理等,有时也通过Helper类调用业务逻辑处理。
Dispatcher
负责view的管理以及页面导航(提供一个页面导航机制以决定下一个将要显示的视图页面),它把来自客户端的请求发送给View;有时也通过Helper类调用业务逻辑处理。Dispatcher可以被封装为一个Controller(参考Front Controller),也可以作为一个独立的组件与Controller共同协作。该组件由于从Controller独立,便于代码的模块化。
View
负责显示逻辑。
Helper
帮助View或Controller完成它们的工作,包括为view的显示收集所需数据;以ValueBean的形式保持中间数据;连接数据库或调用其他业务逻辑处理等。一个View可以有多个Helper。
策略
Service to Worker模式是一个复合模式,根据它的每一个部分实现的策略的不同,有多种实现策略:
Servlet Front Strategy
前面介绍的使用Servlet做为Front Controller。
JavaServer Pages Front Strategy
前面介绍的使用JSP做为Front Controller。
JSP View Strategy
JSP作为View。
Servlet View Strategy
Servlet作为View。
JavaBean Helper Strategy
JavaBean Helper策略
Custom Tag Helper Strategy
自定义标签Helper策略
Dispatcher in Controller Strategy
Dispatcher包含在Controller的里面。
Transformer Helper Strategy
Helper被实现为eXtensible Stylesheet Language Transformer(XSLT)。
优点:
使用Service to Worker模式有以下好处:
- 集中控制,以及提高应用程序的模块化,可重用性,以及可维护性
- 提高角色的独立性。有利于让项目组人员分工合作,分别负责应用程序的不同部分
相关模式
Front Controller 与View Helper
Service to Worker模式是Front Controller,dispatcher,View Helper的组合。
Dispatcher View
Dispatcher View是一种与Service to Worker相似的模式,它也是在Front Controller与View Helper之间加入Dispatcher组件,但不同的是,两种模式的组件工作的内容有些区别,Dispatcher View模式建议把页面内容的组建工作(content retrieval)分离到view的处理时,也就是说,Dispatcher View模式中的Dispatcher仅仅只完成对view的管理和navigation工作。而Service to Worker模式中Dispatcher所完成的工作相对多一些。详细在Dispatcher View模式一文中再作讨论。
参考资料:
Core J2EE Pattern Catalog
Core J2EE Patterns - Service to Worker
发表评论
-
MVC模式 - 写在理解J2EE模式的前篇
2010-10-20 15:45 825MVC模式Model-View-Controller头字母的缩 ... -
J2EE核心模式三
2010-10-20 15:43 766View Helper(视图协助器 ... -
图解EJB的体系结构
2010-10-20 15:27 821本文对EJB的体系结构作一个全面介绍: * EJB在 ... -
J2EE核心模式一
2010-10-20 15:18 889概要 本文对J2EE企业架 ... -
JDBC 学习笔记
2010-10-19 12:24 710JDBC原理概述 1,JDBC是一套协议,是JAVA开 ...
相关推荐
J2EE核心模式.pdf J2EE核心模式.pdf J2EE核心模式.pdf
《J2EE核心模式第二版》是一本深入探讨Java企业级应用开发的经典著作。这本书针对JavaEE(Java Platform, Enterprise Edition)平台,详尽解析了一系列的设计模式,旨在帮助开发者理解和应用这些模式,以构建高效、...
J2EE核心模式,扫描的
### J2EE核心模式知识点详解 #### 一、J2EE概述 J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems公司推出的一种企业级应用开发平台标准,旨在简化大型分布式系统的开发工作。J2EE的核心优势在于其...
《J2EE核心模式》是一本深受欢迎的书籍,它为Java企业级应用开发提供了坚实的理论基础和技术指导。这本书详细探讨了在J2EE(Java 2 Platform, Enterprise Edition)平台上构建可扩展、灵活且可维护的软件系统的关键...
**J2EE核心模式**是Java企业版(Java 2 Platform, Enterprise Edition)开发中的重要指导原则和最佳实践。这本书深入探讨了如何有效地利用J2EE技术构建可扩展、健壮且可维护的企业级应用程序。以下是对J2EE核心模式...
本书详细介绍了J2EE 核心模式,内容通俗易懂!从最基础的开始介绍!
j2ee核心模式第二版.part3.rar
**J2EE核心模式**是Java企业版(Java 2 Platform, Enterprise Edition)开发中的重要指导原则和最佳实践。这个概念旨在提供一套可复用的架构模式,帮助开发者在J2EE平台上构建高效、可扩展且易于维护的分布式应用...
j2ee核心模式第二版.part2
本书主要讲述企业JAVA 2平台(J2EE)关键技术的模式、最佳实践、设计策略和经过验证的解决方案。涉及J2EE包括的15个模式的分类和大量的策略,便于读者更好地掌握JAVA技术。 本书适合J2EE的爱好者、程序员、设计师、...
Java开发之《J2EE核心模式》全书电子版中文pdf格式。众多业界名人对J2EE核心模式给予积极评价,称其是一次出色的汇集,固化了J2EE开发的重要经验,是一本福音书,她提供一套明确无误的、经过实战检验的模式语言以及...
J2EE核心模式(PDF)
本书讲解使用J2EE核心技术实现企业应用过程中的模式、最佳实践、设计策略以及经过验证的解决方案,涵盖了JSP、servlet、EJB、JMS等技术,其中J2EE模式目录包括21个模式以及大量策略,帮助读者迅速熟练掌握J2EE技术,...
《J2EE核心模式》是Java企业级应用开发的重要参考资料,它深入剖析了J2EE平台上的设计模式和最佳实践。这些模式可以帮助开发者构建可扩展、健壮且易于维护的分布式应用程序。以下是对《J2EE核心模式》一书及其中关键...
Java开发之《J2EE核心模式》全书电子版中文pdf格式。众多业界名人对J2EE核心模式给予积极评价,称其是一次出色的汇集,固化了J2EE开发的重要经验,是一本福音书,她提供一套明确无误的、经过实战检验的模式语言以及...