读书笔记-《J2EE核心模式》

这几天把《J2EE核心模式》重读了一遍,发现又有很多心得,真是精品中精品啊,觉得有必要摘录一下主要内容,消化一下。
不佳实践
1)把表现层的数据结构暴露给业务层和业务领域对象。如HttpServletRequest,应该只限于表现层,把这一类细节暴露给业务层会增加层次之间的耦合度
2)允许重复提交表单
3)创建出"胖控制器"。不要业务逻辑全放在控制器里,应分包给视图助手和业务层
4)把业务模型直接映射为entity bean模型。结果会造成entity bean粒度过细。
5)把关系型模型直接映射为entity bean模型。结果会造成entity bean粒度过细。
6)把每一个用例映射为一个session bean。结果会造成session bean粒度过细。
7)通过get/set方法暴露EJB所有属性。这会导致客户端进行许许多多的细粒度的远程调用,影响性能
8)在客户端包括服务寻址代码
9)加载entity-bean的整个拓扑结构。在需要的时候加载
10)把EJB的相关异常暴露给非EJB模块
11)使用entity bean finder方法返回大型结果集
12)客户端负责聚合来自业务组件的数据
13)把EJB用于长时间的持续的事务
14)每次调用无状态session bean都要重建状态
J2EE重构
1)引入同步器令牌
2)隔离视图逻辑和业务逻辑
3)对业务层隐藏表现细节
4)用session bean包装entity bean
5)引入业务代表
6)合并session bean
7)减少Entity bean之间的通信
8)将entity bean之间的业务逻辑移至session bean
9)分离数据访问代码,增加DAO层
表现层模式
1)拦截过滤器

效果:利用松耦合的处理器实现控制集中化;增进了重用;能够灵活地通过申明配置
2)前端控制器

效果:集中控制;提高系统可维护性;增进了重用;增进了开发团队中指责之间的区分;
3)Context对象

效果:提高可复用性和可重用性;提高可测试性;减少对接口变化的限制;降低了性能
4)应用控制器

效果:
5)视图助手:把视图和相关的处理逻辑分离开

效果:明确了应用系统各部分的分隔;明确了开发团队的分工;简化了测试
6)复合视图:需要结合多个模块化的视图组件,创建一个复合的整体视图,同时还要独立地管理页面的内容和布局

效果:提高了模块化程度;提高了重用性;添加了基于角色和安全策略的访问控制
7)服务到工作者:在把控制权交给视图之前就完成完成核心的请求处理过程和业务逻辑调用

效果:提高了模块化程度;提高了重用性;明确了开发团队的分工;
8)分配器视图:需要用视图来处理请求,生成响应,同时又要让它来完成数量有限的业务处理

业务层模式
9)业务代表:与业务服务组件远程通信的任务复杂度很高,需要对客户端隐藏这种复杂度

效果:隐藏底层服务的细节;处理服务端异常并向客户端屏蔽这些异常;缓存结果数据,提高性能
10)服务定位器:一种统一的,透明的方式来定位业务组件和业务服务,隐藏寻址机制的实现细节。

效果:同"业务代表"
11)会话门面:封装业务组件,对远程客户端暴露粗粒度的服务,客户端不直接访问业务组件而是访问会话门面

效果:暴露统一的粗粒度接口,减少了细粒度的远程调用,增强了性能;集中了安全管理和事务控制
12)应用服务:集中,聚合特定的功能,提供统一的服务层,用于集合多个业务对象的业务方法,供会话门面调用。与会话门面相比接口是细粒度的,而与业务对象相比接口是粗粒度的

效果:集中了可重用的业务逻辑和工作流逻辑;简化了门面的实现
13)业务对象:把业务数据和业务逻辑分离开

效果:促进了面向对象实践;把持久化逻辑从业务逻辑中分离出来
14)复合实体:把一些相互关联的业务对象聚合为粗粒度的entity bean。可以采用懒装载策略和脏数据指示器策略

效果:增大了对象粒度;减少了对数据库的依赖;提高了网络性能。
15)传输对象:跨层次传输多种数据元素

效果:不把业务对象直接暴露给客户端,屏蔽业务对象的特性;避免客户端直接操作业务对象;用较少的远程调用传输更多的数据
16)传输对象组装器:从各种不同的业务组件和业务服务中聚合多个传输对象,并且把复合传输对象返回给客户端

效果:简化了客户端逻辑;减少了客户端和应用模型的耦合
17)值列表处理器:执行查询,缓存结果,让客户端遍历,选择查询结果,可以通过sessionFacade或DAO来实现

效果:提高了EJB finder更高效的替代方法;缓存查询结果;更灵活的查询功能
集成层模式
18)数据访问对象:提炼和封装对持久化存储介质的访问,管理与数据源的连接,并通过连接存取数据

效果:对持久化数据透明访问;为数据库数据结构提供面向对象的视图和封装;简化数据库移植;将所有数据访问代码组织到一个独立的层中
19)服务激活器:接收异步请求,并调用一个或多个业务服务

效果:提供异步处理能力
20)业务领域存储:定制持久化框架
21)web service中转
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值