J2EE和模式

1.定义

    在某种特定的上下文中反复出现的一个“问题/解决方案”对子。

2.模式共同特点

l         模式是通过经验观察得出的。

l         一般来说模式都按一种专门的结构格式来记录。

l         采用模式能够避免重新发明轮子。

l         不同的模式处于不同的抽象层次上。

l         模式要经历不断的改进、完善。

l         模式是可以重用的工件。

l         模式可以用来让大家交流系统设计和最佳实践。

l         多个模式可以拼合起来,从而解决一个大型问题。

3.软件模式类型

l         设计模式

l         架构模式

l         分析模式

l         创建型模式

l         结构型模式

l         行为型模式

4J2EE模式

    即是设计模式也可算是架构模式,并可按逻辑分三类:

u           表现层

u           业务层

u           集成层

4.1表现层

   拦截过滤器

   前端控制器

   Context对象

   反应控制器

   视图助手

   复合视图

   服务到工作者

   分配器视图

4.2 业务层

   业务代表

   服务定位器

   会话门面

   应用服务

   业务对象

   复合实体

   传输对象

    传输对象组装器

    值列表处理器

4.3 集成层

    数据访问对象

    服务激活器

    业务领域存储

    Web Service中转

5 模式框架

    在一个整合的应用场景下的一组模式集合。要在模式的层面上把解决方案组合起来,或把组件装配到一起。

    不仅需要孤立地理解单个模式,还必须注重它们之间的关系和组合;如何才能最好地把多个模式连接在一起,形成大的解决方案。

    模式驱动的开发过程:

l         确定应用场景,为系统每个层次提出合适的模式。

l         确定模式组合(或者说解决方案的主旨),从而给出模式框架。

l         为系统方案中的每个角色选定具体实现策略。

6.按逻辑划分的五层模型

6.1 客户端层

    应用客户端、Applet、应用程序和其他GUI:用户交互、UI表现和UI设备。

    客户端可以是web浏览器,java应用程序,wap手机之类。

6.2 表现层

    JSPServlet和其他UI元素:集中登录、会话管理、内容创建/内容格式/内容传递。

    封装了服务于访问系统的客户端的所有表现逻辑。拦截了客户端的请求,提供单一的登录入口,构造了会话管理,控制了对业务服务的访问,构建了响应,并把响应传送到客户端。Servletjsp本身不是UI元素。

6.3 业务层

    EJB和其他业务对象:业务逻辑、事务、数据、服务。

    业务一般在这层,但也可能在遗留系统。

6.4 集成层

    JMSJDBC、连接器和遗留系统:资源适配器、遗留/外部系统、规则引擎、工作流。

    使用JDBCJ2EE连接器技术、某种厂商专有的中间件,从而于资源层协作。

6.5 资源层

    数据库,外部系统和遗留资源:资源、数据和外部服务。

    业务数据于外部资源。

7.模式关系图

8.模式应用

8.1表示层模式

n         对请求做预处理或后处理:拦截过滤器

n         在请求处理中加入日志、调试以及其他操作:前端控制器、拦截过滤器

n         集中对请求处理的控制:前端控制器、拦截过滤器、应用控制器

n         为降低控制器组件和助手组件间的耦合度,创建通用的命令接口或context对象:前端控制器,应用控制器,Context对象

n         控制器应该用servlet还是JSP实现:前端控制器

n         从多个子视图创建一个视图,复合视图

n         视图应该用servlet还是jsp实现,视图助手

n         如何划分视图和模型:视图助手

n         在那里封装表现层相关的格式化数据逻辑:视图助手

n         助手组件应该用JavaBean还是定制标签实现:视图助手

n         合并多个表现层模式:拦截过滤器,分配器视图

n         在哪里封装选择、分派视图的视图管理/导航逻辑:服务到工作者,分配器视图

n         在哪里保存会话状态:在客户端保存会话状态,在表现层保护会话状态,在业务层保护会话状态

n         控制客户端对特定视图或子视图的访问:控制客户端访问,对客户端隐藏资源

n         控制对应用系统请求的流程:重复的表单提交,引入同步令牌

n         控制重复的表单提交:重复的表单提交,引入同步令牌

n         利用<jsp:setPropertity>JSP标准属性复制机制时,包含的设计问题:助手类属性——完整性和一致性

n         分离数据访问代码:分离数据访问代码

8.2业务层模式

n         尽量减少表现层和业务层之间的耦合:业务代表

n         为客户端缓存业务服务:业务代表

n         隐藏业务服务的寻址/创建/访问的实现细节:业务代表,服务定位器

n         隔离服务寻址中的特定厂商/技术的依赖:服务定位器

n         为业务服务的寻址和创建提供统一的方法:服务定位器

n         隐藏EJBJMS组件寻址的复杂度和依赖性:服务定位器

n         在业务对象和客户端间,不同层间传输数据:传输对象

n         为远程客户端提供简单,统一的接口:业务代表,会话门面,应用服务

n         为访问业务层组件提供粗粒度方法,从而减少远程方法调用:会话门面

n         管理EJB组件之间的关系,隐藏交互复杂度:会话门面

n         避免使业务层组件直接暴露给客户端:会话门面,应用服务

n         为访问业务层组件提供统一的边界:会话门面,应用服务

n         用对象实现复杂的业务领域概念模型:业务对象

n         为对象实现复杂的业务领域概念模型:业务对象

n         为业务对象和entity bean的设计找出粗粒度对象和从属对象:业务对象,复合实体

n         设计粗粒度entity bean:复合实体

n         减少或消除entity bean客户端对数据库结构的依赖:复合实体

n         减少或消除entity bean之间的远程关系:复合实体

n         减少entity bean数量,提高可维护性:复合实体

n         从多个业务层组件中获取应用数据模型:传输对象组装器

n         轻松构造应用数据模型:传输对象组装器

n         对客户端隐藏数据模型构造的复杂性:传输对象组装器

n         提供业务层查询和结果列表处理:值列表处理器

n         尽可能减小使用EJB finder方法带来的负载:值列表处理器

n         在服务器端为客户端提供具有向前/向后导航功能的查询结果缓存:值列表处理器

n         选用有状态session bean还是无状态session bean的权衡:“session bean--无状态vs有状态”

n         保护entity bean,禁止客户端直接访问:用session bean包装entity bean

n         封装业务服务,隐藏业务层实现细节:引入业务代表

n         entity bean中包含业务逻辑:entity bean中的业务逻辑,将业务逻辑移至session bean

n         session bean作为粗粒度业务服务提供:合并session bean,用session bean包装entity bean

n         减少和/消除由entity bean之间的通信引起的网络和容器负担:减少entity bean之间的通信

n         分离数据访问代码:分离数据访问代码

8.3集成层模式

l         尽可能减小业务层和资源层之间的耦合:数据访问对象

l         集中对资源层的访问:数据访问对象

l         尽可能减小业务层组件中访问资源的复杂度:数据访问对象

l         为企业应用提供异步处理能力:服务激活器

l         向业务层发送异步请求:服务激活器

l         把请求作为一组并行任务异步处理:服务激活器

l         透明地实现对象模型持久化:业务领域存储

l         实现定制持久化框架:业务领域存储

l         XML和标准Internet协议暴露WebServiceWeb Service中转

l         把现存服务聚合,中转为WebServiceWeb Service中转

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值