J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(五)

业务对象:利用对象模型把业务数据和业务逻辑分离开来。业务对象在最前端(客户端)和最后端(数据资源)都会进行业务数据形式的转化。业务对象的实现通常有两种方式:POJO + JDO 或者 Entity Bean + BMP/CMP。业务对象包含业务逻辑和业务状态。

J2EE系统中面向过程向面向对象转变有时甚至仅仅区别于最初的一念之差。没有什么是绝对的事情,如果业务非常简单,客户端通过浅浅的显示层,直接访问持久层、甚至数据资源存储中业务数据,整个过程中,其结构都是依据客户端所需数据的获取过程来完成的,是典型的面向过程的实现方式,没有什么不合理;但一旦情况复杂了,你也许希望在系统中设定一些核心的业务模型,让它们来驱动整个服务的提供和流程的运转,而不再是客户端无任何包装的需求,这时候兴许就变成了模型驱动下的面向对象行为。

 

复合实体:Composite Entity。结合本地entity bean和POJO,实现业务对象持久化。复合实体能够把一组相互关联的业务对象聚合为粗粒度的entity bean实现。业务对象被实现为父对象和从属对象,从属对象紧耦合与父对象,且无法独立存在或独立被访问、识别和管理。无论使用远程对象还是本地对象实现复合实体,都不应该直接把entity bean暴露给客户端,而应当封装在门面里面。

实际我们的项目中,给内容超市部分,封装了核心的API,而API的调用传值,都是通过复合实体——各种Event完成的。这是一个很好的例子,就算日后将API扩展成可远程调用的方法,性质并未改变。

脏数据标示器策略:对复合实体持久化的时候,如果能判断哪些从属对象是脏的,就可以提高持久化性能。

传输策略可以考虑单次传输整个复合实体,减少网络交互;可以结合脏数据标示器,只传输变化的部分;可以结合懒加载策略,只传输需要的部分。

 

传输对象:Transfer Object。跨层次传输多种数据元素。有一种简化远程对象和远程接口的方法是,把众多get/set方法合并成粗粒度的getDate和setData方法。我们通常希望传输对象是简单和可控的,因此粒度不应过细,细节应尽量屏蔽,对于接口的定义,应该尽少约束。

日后我们系统的API扩展必然面临着复合实体传输的情境,API的远程调用已渐渐变得广泛,比如JavaEye支持API调用,使用JSON作为数据形式;我们常用的Blog客户端也是遵从的简约的API规范开发的。

 

传输对象组装器:Transfer Object Assembler。复合传输对象的形式构建应用模型。从各种不同的业务组件和业务服务中聚合多个传输对象,并且最后把复合对象返回给客户端。最大的好处:减少了客户端和应用模型之间的耦合。对于不同的传输形式,就并不需要应用模型做任何的改变,搭配不同的传输对象组装器和传输策略即可。

系统的页面集成中涉及到的会话信息的传递,提供了几种策略,就涉及到SpringHTTPInvoker传输、OSCache传输、本地传输和void传输等相应的对象组装器。

 

值列表处理器:Value List Handler。执行查询、缓存结果,并让客户端遍历、选择查询结果。基本上相当于封装了一个游标,共客户端遍历操作,但是如果这个游标是远程的,注意可能造成巨大的性能消耗。

我们的系统中设计了一个类:PaginationSupport,用于分页,其角色便类似于值列表处理器。需要查询哪一块区域的数据集合,就传递相应的游标指令。

 

文章系本人原创,转载请注明作者和出处

core j2ee patterns 2nd editioin 核心的J2EE设计模式 立即下载

相关推荐

CoreJ2EE_Patterns2nd_pdf_chm.rar

The book of CoreJ2EE_Patterns2nd is very good book to study J2EE,it contains both pdf and chm formats.

Core J2EE Patterns - Data Access Object

In computer software, a data access object (DAO) is a pattern that provides an abstract interface to some type of database or other persistence mechanism. By mapping application calls to the persistence layer, the DAO provides some specific data operations

来啊 快活啊 3909

Core J2EE Patterns

Core J2EE Patterns

“那本”J2EE书——《J2EE核心模式》(第二版)译者序

“那本”J2EE书刘天北 熊节(原文刊登于《中华读书报》2005年2月23日号)  翻开这本《J2EE核心模式》,你首先就会注意到软件方法论领域的两位大师GradyBooch和MartinFowler撰写的序言。在这样两份序言后面再附上一篇“译序”,这个念头本身就足够荒谬和僭越,不啻于在莎翁之后再写一出关于丹麦王子复仇的剧本。大师们的判断是中肯而毫不含

透明思考@优快云 9158

J2EE核心模式(Core J2EE Patterns)

关于J2EE设计模式的经典著作,由SUN资深工程师经验写就。

Core J2EE Patterns(英文版)

J2EE 核心设计模式。Interceptiong Filter、Service Locator 、BUsiness Delegate 等。

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(汇总帖)

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(一) J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(二) J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(三) J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(四) J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(五) J2EE 核心模式(Core J2EE Patterns)学习

四火专栏 1692

Core J2EE Patterns(Second Edition)

真的能打开,是.chm格式的,别的地方已经很难找了 自己下载分快不够了,才来赚点分,我也不贪心,就3分 谁觉得值的或者用得着的就下

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(一)

第1章:导论。 模式能够: 利用一个经过验证可行的解决方案; 提供一套通用词汇; 约束解决方案的空间。   第2章:表现层设计考虑和不佳实践。 客户端验证:基于表单的验证、基于抽象类型的验证。 曾经在JSP中滥用过的助手类,通过助手类在页面和业务逻辑之间传递数据,有点类似于如今Struts中的Action作为传值模型时的情况。 表现层不佳实践: 多个视图中都包含控制代码; 表现层数据结构暴露给业务层或者业务领域对象,比如:暴露HTTPServletRequest; 重复提交表单;

四火专栏 3695

CoppeliaSim(原V-REP)新手上路

CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。

qq_37051669的博客 4万+

究竟什么是虚拟同步机???虚拟同步机巨简单理解

同步发电机定子铁芯的内圆均匀分布着定子槽,槽内按一定规律嵌放着对称的三相绕组U1-U2、V1-V2、W1-W2,如图1所示。工作原理转子铁芯上装有制成一定形状的成对磁极,磁极上绕有励磁绕组。励磁绕组上通直流电时,会在电机的气隙中形成极性相间的分布磁场,称为励磁磁场。当原动机拖动转子以恒定速度旋转时,励磁磁场随转轴一起旋转并顺次切割定子各相绕组。定子电枢绕组中将会感应出大小和方向周期性变化的三相对称正弦感应电动势。各相电动势大小相等,相位各差120°。

weixin_53126442的博客 2608

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(四)

业务层模式:   业务代表:Business Delegate。封装对业务服务的访问,隐藏服务层具体实现细节,主要为降低客户端和服务层之间的耦合。除了隐藏服务细节、处理服务异常等基础功能以外,还可以做服务的缓存。业务代表是客户端的直接客户,起到客户端业务抽象层的作用,而业务代表的另一头,常常连接着会话门面。 比较常用的情况就是在某种远程连接和业务处理的基础上,使用业务代表把这些细节统统包装起来,给内部提供的模型也好API也好,都是和外部接口相异的。比如一个系统中对于展现的内容数据的同步,以及订购、使用

四火专栏 1388

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了如何使用STM32硬件SPI驱动W5500以太网模块,包括开发环境准备、SPI接口配置、网络参数设置及常见问题排查。通过官方驱动移植和实战案例,帮助开发者快速实现以太网通信功能,适用于智能家居、工业控制等物联网应用场景。

weixin_29192141的博客 364

以功能开发者角度理解J2EE核心模式(Core J2EE Patterns)

一. 目标 模块化、松耦合、紧内聚、提高可维护性和重用性。这些我们听得最多了,看起来很空,但模式确实做到了。实现主要用到:封装、分层、AOP 二. 理解 我粗劣看完《J2EE核心模式》第二版,有一些理解。我要用通俗的语言,随意的文字来描述,即使我成不了专家我也这么做。随意写,不严谨,不负责。 为什么要使用模式?   答:高端大气上档次!具体参照文章头部 模式怎么来? 答:模式是总结出

鱿鱼 2393

顶级的FDE需要拥有哪些技能?

上一篇《》说明白了什么是FDE。这一篇回答下一个问题:要成为顶级 FDE,需要哪些具体的技能?要想弄清楚FDE应该有哪些能力,就得先搞清楚FDE要完成哪些工作。同时,有一点是我们要密切关注的:现在是大模型时代,所以我们不能脱离大模型讨论FDE的能力。我们可以把FDE在客户现场需要完成的工作分为四类:破冰与诊断、价值交付、项目与预期管理、沟通与影响。另有两项元能力贯穿始终。以下按工作类别逐一拆解,每项能力配 1 / 3 / 5 分标准,方便对照自评。文末有完整打分工具链接。

mydeman的学习日志 261

HTB_Bike靶机之模板注入

船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.

网络安全学习 798

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(三)

复合视图:Composite View。使用由多个原子化的子视图构成的复合视图。特点是组合是可以动态的,而页面布局又可以整体控制,和页面内容互相独立。 有这么几个常见的例子:Portlet就是一个复合视图结合的最好例子,主题可以影响到所有视图的呈现,又是和展示的具体内容没有关系的,Portlet可以在服务端做到视图的聚合,而不把事情遗留到客户端完成,不涉及浏览器跨域的安全性问题;SiteMesh是一个很适合对页眉、页脚等页面通用元素拼装的框架,比jsp:include标签优雅;更小维度上,标签的引用也可以

四火专栏 1676

使用R语言获取data.frame中指定列的数据

这里以"df"为例,包含三列数据:“列1”、“列2"和"列3”。通过以上代码,我们成功获取了"列1"和"列3"的数据,并将它们分别存储在了变量"column1"和"column3"中。假设我们有一个名为"df"的data.frame,其中包含了多个列,我们想要提取其中的某一列。符号,我们可以从data.frame中提取出"列2"的数据,并将其赋值给变量"column2"。符号,我们可以轻松提取出data.frame中特定列的数据,并将其存储在变量中供进一步的分析和处理使用。假设我们要获取"列2"的数据。

DevRevolt的博客 2321

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(二)

我看的资料和这幅图有一些出入。 资料要去这里找:http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html   表现层模式:   拦截过滤器:Intercepting Filter。正如图中的“Apply zero or more”和Servlet规范所述一样,应当具备一个链式结构。这个链式结构中的每个...

zljpp的专栏 140

【BlueZ】编译产物详解:可执行文件/库文件/工具的生成路径与用途

BlueZ二次开发编译产物机制解析 摘要:在BlueZ蓝牙协议栈二次开发中,90%的报错源于对编译产物类型和路径的混淆。本文系统剖析BlueZ的三阶段编译机制:1)配置阶段生成Makefile;2)编译阶段在.libs目录下产生临时库和可执行文件(不可直接运行);3)安装阶段将产物部署到系统标准路径。重点解析守护进程、命令行工具、动态库的核心路径差异,并针对五大高频问题(如临时库运行崩溃、动态库不匹配、系统覆盖等)给出解决方案。

byte轻骑兵的技术小窝 1万+

Debezium 性能调优实战:吞吐量、延迟与资源平衡

摘要: 本文分享了团队如何通过系统性调优将Debezium从初始3,200 TPS/2.8秒延迟提升至15,200 TPS/210ms延迟的实战经验。优化涵盖四个层面:1)Debezium连接器配置(批处理、快照并行、消息精简);2)Kafka分区策略与Avro序列化缓存;3)JVM改用ZGC及OS参数调优;4)MySQL的binlog与I/O优化。关键发现包括分区数黄金公式、sync_binlog调整带来56%的I/O负载下降,以及避免盲目增大队列内存等陷阱。最终实现吞吐量提升4.75倍,并强调性能调优需

爱丹丹的博客 358

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(六)

集成层模式:   数据访问对象:Data Access Object。提炼和封装对持久化存储介质的访问。DAO封装了数据源的实现细节,总是面向API调用者提供统一的接口。DAO应当被实现为无状态的对象,这样就可以成为轻量的对象,不需要考虑线程、同步、缓存等问题,而把这些问题下沉到数据层去完成。 以我参与的项目的缓存的使用举例,模型DAO并不做任何的缓存行为,数据库使用自身的缓存能力,并且在必要时冗余字段,这是基于数据粒度的基础缓存;到了调用DAO的业务层面,比如Service层,才进行业务模型粒度的缓

四火专栏 1216

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(七)

Web Service中转:暴露可通过XML和web协议访问的服务,并将对服务的请求转发给真实的服务组件。通常有许多Web Service是不希望暴露出来的,有时有一些服务又需要聚合起来使用,这时候就需要Web Service中转。在使用中转前的Web Service需要被改造,以支持中转的接口(例如一个本地接口)。这个模式和Facade很类似,只不过它的定位放在了远程接口上。   微架构:一组被同时使用的模式,用于实现系统中的一个特定部分(子系统)。每一个微架构是独立和内聚的积木块,由它们构成整个系统

四火专栏 1155

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(五)
下一篇: J2EE 核心模式(Core J2EE Patterns)学习随心理解、随手记录(六)
RayChase
博客等级 码龄20年 71粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值