J2EE 模式
J2EE模式提供了一组基于J2EE平台对于常见的问题的解决方案。他们体现的是JAVA架构师从大量成功的J2EE技术实践中获得的集体经验和技术方案,这些J2EE模式是开发者常常碰到的问题,并且提供了对这些问题的解决方案。这些解决方案来自我们一直以来同无数J2EE客户所做的工作,以及我们与其他遇到了类似问题的JAVA架构师的交流。这些模式固化了以上的解决方案,体现了长久以来我们的集体经验对方案作出的提升,J2EE模式针对的领域是J2EE领域,尤其是J2EE技术的几种关键成分,如EJB、JSP、和SERVLET。在实现用这些技术,我们会发现,有一些问题和一些难点往往会让优良的技术实现难于进行,因此我们需要一种经验一套有效的最佳实践和思路,用于组合使用这些技术,然而J2EE模式就是这种经验最佳实践和思路,J2EE模式以切实名的方式呈现出来,使用这些J2EE模式,就能够成功、快速的设计J2EE系统。
@什么是模式
上一篇日志也讲了,模式某种意义上就是在一个约束的上下文中,反复使用的解决相似问题的解决方案。模式就是经验,所以模式是慢慢形成的是慢慢发现的,不是发明的一蹴而就的。特定的上下文指的是一些边界条件一些特定的环境一种情况,再者就是反复的使用。
@如何发现模式
模式不是你凭空想象的,是从你的解决方案中寻找吧,再者就是你发现模式,一定概要站在要寻找模式的抽象层次上,这是前提,也是比较难做到的,有时候我们发现的并不能叫做模式,或许叫做某一个模式的策略会更好一点,策略的抽象层次比模式的抽象层次要低一些。策略的解决方案体现了模式的形式,我们可以认为不同的策略就是从不同的侧面体现了模式的应用。当然我们的切入点是J2EE模式,每个模式都有不同的策略,其实你的抽象层次放低一点,每个策略其实也可以叫做模式,只是或许我们站在J2EE模式的抽象高度上,对于我们学习和应用J2EE模式会更有利,仅此而已吧,高一点或者低一点都不行吧。
@分层思想
抽象层次站在了J2EE模式这以抽象高度,我们可以有不同的分类,我们按层来分类更便于学习和符合人们的认知。分为:表现层、业务层、集成层。
@J2EE模式
表现层:
拦截过滤器:用于对请求的预处理和后处理
前端控制器:提供了用于管理请求处理的一个集中控制器
content对象:以独立于具体的通信协议的形式封装了状态,是状态能够在整个应用系统中共享。
应用控制器:实现操作action和视图管理的集中化、模块化
视图助手:把与表现格式无关的逻辑封装在助手组件中
符合视图:把多个子组件创建一个聚合视图
服务到工作者:把前端控制器、视图助手模式和一个分配器组件结合起来
分配器视图:把前端控制器模式、视图助手模式和一个分配器组件结合起来,延迟了很多视图处理操作。
业务层:
业务代表:封装了对业务服务的访问
服务定位器:封装了服务和组件的寻址
会话门面:封装了业务层组件,把粗粒度服务暴露给远程客户端
应用服务:集中、聚合了系统行为,提供了一个统一的服务层
业务对象:使用业务模型区分业务数据和业务逻辑
复合实体:使用本地entity bean 和POJO实现业务对象
传输对象:在各层之间传输数据
传输对象组装器:来自多个数据源的数据组装成一个符合传输对象
值列表处理器:处理查询,缓存结果,提供逐个访问结果和选择特定结果的能力
集成层:
数据访问对象:抽象并封装了对持久化存储的访问
服务激活器:接受消息,并异步调用处理过程
业务领域存储:为业务对象提供了一套透明的持久化机制
web service中转:通过XML和web协议暴露出一个或多个服务。
@与现有其他模式的关系
软件模式文档是一种财富,今天这种财富已经相当充裕易得了。很多种专著都记录了模式,而这些模式处于不同的抽象层次上。有架构模式、设计模式、分析模式以及编程模式。其中最受欢迎、影响最大的还是GFO《设计模式:可重用面向对象软件的基础》一书,通常称为四人帮或者GOF书,GOF书中描述了面向对象设计中的专家解决方案。
我们的模式目录包括的模式-J2EE模式,描述了应用程序的结构和设计元素。这个模式目录的基调主题是对J2ee平台的支持。目录中有一些模式是基于其他文献中的模式或者与其相关的。在这些情况下,为了体现这种关系,我们会为特定的J2EE模式模式按照其他现有的其他模式名称命名,并且/或者在模式介绍结尾的“相关模式”部分列出参考文献,举例来说,有些模式是基于GOF书中的模式的,但是放在J2EE模式语境中考虑,在这种情况下,该J2EE模式的名称中就包括GOF书中模式的名字,并且在“相关模式”部分会出现对GOF书的参照。