数据传输对象
一个在进程之间传递数据的对象,用于减少方法调用的次数。
有关完整描述,请参见 P of EAA 第 401 页
当您使用远程接口(例如远程外观 (388))时,每次调用它都很昂贵。因此,您需要减少调用次数,这意味着您需要在每次调用中传输更多数据。一种方法是使用大量参数。但是,这通常难以编程——实际上,对于像 Java 这样的只返回单个值的语言来说,这通常是不可能的。
解决方案是创建一个数据传输对象,它可以保存调用所需的所有数据。它需要可序列化才能跨连接传递。通常,在服务器端使用一个组装器将数据在 DTO 和任何域对象之间进行传输。
Sun 社区中的许多人使用术语“值对象”来表示这种模式。我用它来表示其他含义。请参阅第 487 页的讨论。
虽然使用数据传输对象的主要原因是将多个远程调用合并为单个调用,但值得一提的是,另一个优点是封装用于通过网络传输数据的序列化机制。通过这样封装序列化,DTO 将此逻辑从代码的其余部分中分离出来,并且还提供了一个清晰的点来更改序列化,如果您希望这样做。
自本书出版以来,Sun/Java 社区的术语使用发生了变化。他们改用“传输对象”作为这种模式的名称。因此,“值对象”经常以我在本书中描述的方式使用。