DTO模式的研究

来源:互联网 发布:编程一个球从100米落下 编辑:程序博客网 时间:2024/04/30 11:05

     今天学习了DTO工厂模式,在这里向大家阐述一下今天学习DTO的成果。

     首先,先让我们来看一下DTO是用来干什么的(不是个人的,是摘抄网上的,毕竟网上的理论更好):

     在一个分布式应用中,客户端和服务器端的交互通常是读取数据和写入数据。当客户端需要读取数据即要显示服务器上的一个属性集合的时候,而这些属性存在于一个实体 bean 中或可以通过一个会话bean存取; 这时客户端是通过启动多个潜在的带有网络负载的远程调用来获得它所需要的数据,每个调用需要对返回值序列化和反序列化这必然会降低网络的性能。当客户端要向服务器端写入数据的时候,需要调用企业bean提供的一个具有多个参数的方法。当参数的数量十分庞大时,导致这些方法的实现显得十分臃肿。

     DTO就是为了在客户端和服务器端交换大量的数据,而无需多个细粒度的调用,减少远程调用的数目,避免相关的网络负载,同时提供一种比较优雅的解决方案。

     那么DTO的实现方式是什么呢?根据需求和不同情况,DTO对象的实现主要分为以下5种:
     第一种:基本DTO模式
     作用:是一种只读的DTO,主要用于读请求。
     实现:在DTO类中提供所需要的属性和相应的getter方法。

     第二种:可更新的DTO模式
    作用: 该模式是对基本 DTO 模式的增强。它不仅把来自业务对象的值对象传递到客户端,而且可以把客户端希望更新的数据传递回业务对象。
      实现:在DTO类中提供所需要的属性和相应的getter和setter方法。

     第三种:多DTO模式
     作用: 在有些情况下 ,客户端会向同一个业务对象发出不同的请求 , 要求业务对象返回多个不同的 DTO 。这时 , 业务对象和 DTO 之间是一对多的关系 。
      实现: 在业务 bean 中提供多个 getData( ) 方法。如: getFirstDTO( ) 返回 firstDTO 对象 , getSecondDTO( ) 返回 secondDTO。依此类推 。

     第四种:实体继承DTO模式
     作用: 当业务对象使用实体 bean 来实现, 并且客户端需要访问该实体 bean 的数据时, 该实体bean 实现的业务对象和 DTO 是一对一的关系,并且实体 bean 和 DTO 都拥有相同的属性 。
      实现:: 将该实体 bean 扩展 DTO 类 。

     第五种:DTO工厂模式
     作用: 该模式与多 DTO 模式类似, 可以为客户端创建实体 bean 的多个 DTO
     实现原理: 为每个 DTO 定义一个不同的接口,实体 bean 继承的 DTO 超类实现所有这些接口。客户端请求 DTO 对象时, 需要把 DTO 的类传递给 DTO 工厂类 ,由工厂类构造 DTO 实例并且设置业务实体 bean 的数据。
     优点 : 由于采用了工厂设计模式和反射机制 ,使得 DTO 对象的创建更加动态 ,而且当某个DTO类定义发生变化时 ,该 DTO 会自动地处理变化 ,而不需要再编写其它代码 。

     以上是我今天的学习成果,每天学一点,日积月累,总是会成为大神的

0 0
原创粉丝点击