博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读书笔记-《J2EE核心模式》
阅读量:2442 次
发布时间:2019-05-10

本文共 2102 字,大约阅读时间需要 7 分钟。

这几天把《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中转

转载地址:http://bxvqb.baihongyu.com/

你可能感兴趣的文章
如何学习Photoshop的极客指南,第2部分:面板
查看>>
如何在iPhone上将实时照片转换为视频或GIF
查看>>
xbmc_从iPhone或iPod Touch控制XBMC
查看>>
编程爱好者网站_读书爱好者的最佳免费网站
查看>>
为什么运行微波会杀死Wi-Fi连接?
查看>>
matlab生成文本乱码_如何生成完全随机/乱码文本的段落
查看>>
siri捷径调用谷歌翻译_告诉它使用Google助理,以减少Siri的麻烦
查看>>
outlook转发邮件步骤_Microsoft Outlook中的快速步骤指南
查看>>
macos 托盘文件预览_如何在Ubuntu的文件管理器中快速预览文件(如macOS中的“ Quick Look”)...
查看>>
macos 快速启动启动台_无法获取macOS通知? 这是解决方法(无需重新启动)
查看>>
为什么您可能不应该将您的企业网站运出家门
查看>>
如何在Android上使用Amazon Underground免费获取大量应用内购买
查看>>
如何使用HDHomeRun在计算机,游戏机和其他设备上观看直播电视
查看>>
如何在没有智能手机的情况下使用Google Authenticator和其他两因素身份验证应用程序...
查看>>
什么是“ Microsoft网络实时检查服务”(NisSrv.exe),为什么它在我的PC上运行?...
查看>>
如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
查看>>
询问HTG:增强Wi-Fi连接性,校准显示器并执行基于计算机的恶作剧
查看>>
将code添加到上下文菜单_通过将选项卡添加到资源管理器,创建上下文菜单项等来轻松调整Windows 7和Vista...
查看>>
询问HTG:选择要备份的文件,将扫描仪用作复印机,并将iPad配置为第二台显示器...
查看>>
es dsl 提取不重复值_询问操作方法:诊断DSL挂断,从PowerPoint中提取媒体,将IE限制为单个网页...
查看>>