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类,它通常具有如下特点:

  1. 这个Java类必须具有一个无参的构造函数
  2. 属性必须私有化
  3. 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。 属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。 一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

在使用中一般将ValueObject定义成JavaBean的样式以规范使用。











阅读全文
0 0
原创粉丝点击