Java程序性能优化 读书笔记(七)设计模式:ValueObject模式
来源:互联网 发布:大连品牌网络推广公司 编辑:程序博客网 时间:2024/05/22 06:07
一、Value Object模式
在J2EE软件开发中,通常会对系统模块进行分层。展示层主要负责数据的展示,定义数据库的UI组织模式;业务逻辑层负责具体的业务逻辑处理;持久层通常指数据库以及相关操作。在一个大型系统中,这些层次很有可能被分离,并部署在不同的服务器上。而在两个层次之间,可能通过远程过程调用RMI等方式进行通信。
如下图所示,展示层组件作为RMI的客户端,通过中间的业务逻辑层取得一个订单(Order)的信息。假设一个订单由客户名、商品名和数量构成,那么一次交互过程可能由图所描述的这样,RMI的客户端会与服务端进行3次交互,依次取得这些信息。
基于以上模式的通信方式是一种可行的解决方案,但是它存在两个严重的问题:
(1)对于获取一个订单对象而言,这个操作模式略显繁琐,且不具备较好的可维护性。
(2)前后累计进行了3次客户端与服务器的通信,性能成本较高。
为了解决这两个问题,就可以使用Value Object模式。Value Object模式提倡将一个对象的各个属性进行封装,将封装后的对象在网络中传递,从而使系统拥有更好的交互模型,并且减少网络通信数据,从而提高系统性能。使用Value Object模式对以上结构进行改良,定义对象Order,由Order对象维护客户名、商品名和数量等信息,而Order对象也就是Value Object,它必须是一个可串行化的对象。将Value Object模式应用到本例中,便可以得到如图2.16所示的结构。
图2.16 Value Object模式架构图
在基于Value Object模式的结构中,为了获得一份订单信息,只需要进行一次网络通信,缩短了数据存取的响应时间,减少了网络数据流量。注意:使用Value Object模式可以有效减少网络交互次数,提高远程调用方法的性能,也能使系统接口具有更好的可维护性。
二、JavaBean
JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:
- 这个Java类必须具有一个无参的构造函数
- 属性必须私有化。
- 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。 属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。 一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。
在使用中一般将ValueObject定义成JavaBean的样式以规范使用。
- Java程序性能优化 读书笔记(七)设计模式:ValueObject模式
- Java程序性能优化 读书笔记(二)设计模式:单例模式
- Java程序性能优化 读书笔记(三)设计模式:代理模式
- Java程序性能优化 读书笔记(四)设计模式:享元模式
- Java程序性能优化 读书笔记(五)设计模式:装饰者模式
- Java程序性能优化 读书笔记(六)设计模式:观察者模式
- Java程序性能优化 读书笔记(十)并行设计模式:Future模式
- Java程序性能优化 读书笔记(十一)并行设计模式:Master-Worker模式
- Java程序性能优化 读书笔记(十二)并行设计模式:Guarded Suspension模式
- Java程序性能优化 读书笔记(十三)并行设计模式:不变模式
- Java程序性能优化 读书笔记(十四)并行设计模式:生产者-消费者模式
- ValueObject模式
- java程序性能优化之设计优化--设计模式:单例模式(1)
- ValueObject 介绍(VO 模式)
- 什么是ValueObject (VO 模式)
- ValueObject 介绍(VO 模式)
- java 程序性能优化 记录2(设计模式)
- java程序性能优化---2--2.1常有设计模式
- JavaWeb学习心得之JDBC处理Oracle大数据
- 数据结构与算法-堆与堆排序
- Logistic Regression逻辑回归模型
- Python异常编码处理
- HDU 1520 Anniversary party——树形dp
- Java程序性能优化 读书笔记(七)设计模式:ValueObject模式
- git如何拉取远程分支
- Java中Servlet的使用(一)——Hello Servlet
- springstrutsmybatis-annotation
- 分页查询简约代码显示
- 动态规划初步
- spring整合数据库连接池
- 读书笔记:《人工智能》
- linux 下查看有当前文件夹有多少个文件