数据传输对象应该有多大?

时间:2010-08-03 18:14:52

标签: java oop dto

据我所知,数据传输对象用于不同的目的,因此让我们将范围与基于Java(JSF)的Web应用程序中的视图层绑定(即通常有一些实体对象映射到数据库,也可以在Business-Logic层中使用,也可以在表示层中使用一些传输对象。

所以,我对如何精心设计的DTO看起来有些误解。我应该尽可能小吗?或者我应该尝试尽可能多地传递它们并以这样的方式设计它们,以便一次只初始化DTO字段中的一些(不同用例)不同的部分?

在设计DTO时,我是否应该考虑使用一些OO原则(至少是继承和组合),或者它们应该只与一些具有访问器的原始类型字段一样简单?

3 个答案:

答案 0 :(得分:2)

如果与域对象/实体完全不同,DTO应该尽可能大 - 您应该准确传输所需的所有数据。

答案 1 :(得分:1)

任何语言的DTO都应该很轻。是否使用继承是一个只有你能回答的问题 - 它实际上取决于业务需求。否则,DTO本身应该包括基本的get / set属性。

通常这些对象非常轻,但它实际上取决于您需要的数据/属性。如果您的DTO有1个属性而不是50个属性,那么如果您需要50个属性,那么就可以了。当需要将数据传递给函数/方法时,DTO可以免除必须添加所有这些额外参数。你基本上只是传递一个对象。

答案 2 :(得分:1)

DTO应尽可能轻量级,与业务对象不同,并且范围有限(例如 package 级别对象)。

我说他们应该与业务对象分开,这与Bozho的声明“如果与域对象完全不同”相反,因为DTO通常需要业务对象的用户不应该使用的setter。

例如,我有一个Person对象和一个PersonDTO ... DTO需要一个人名的设置器(第一个,最后一个等)但是从外部数据源检索并且不允许我的应用程序要改变它,所以我的业务对象“Person”不应该有一个setter。