代码之家  ›  专栏  ›  技术社区  ›  Roman

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

  •  1
  • Roman  · 技术社区  · 14 年前

    正如我所理解的,数据传输对象用于不同的目的,所以让我们将范围与Java(JSF)为基础的Web应用程序中的视图层绑定(即通常有一些映射到DB上的实体对象,也可以在业务逻辑层中使用,以及在表示层中使用的一些传输对象)。

    所以,我对设计良好的DTO应该如何看起来有些误解。我应该尽量把它们放小吗?或者我应该尽可能多地传递信息,并以这样的方式设计它们:一次只初始化DTO字段的某些部分(在不同的用例中是不同的)?

    在设计DTO时,我应该考虑使用一些OO原则(至少是继承和组合原则),还是应该像使用其访问器的一些基本类型字段那样简单?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Bozho    14 年前

    如果DTO与域对象/实体完全不同,那么它应该与需要的一样大——您应该准确地传输所需的所有数据。

        2
  •  1
  •   JonH    14 年前

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

    一般来说,这些对象非常轻,但是它实际上取决于您需要的数据/属性。如果你的DTO有1个属性对50个属性,如果你需要50个,就这样吧。当需要将数据传递给函数/方法时,DTO可以避免您必须添加所有这些额外参数。你实际上只是通过一个物体。

        3
  •  1
  •   Stephen P    14 年前

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

    我认为它们应该与业务对象分开,这与博日奥的“如果与域对象完全不同”的说法相反,因为DTO通常需要业务对象的用户不应该使用的设置器。

    例如,我有一个人对象和一个人要…DTO需要为人员的姓名(名字、姓氏等)设置一个setter,但是从外部数据源检索到的名字和我的应用程序是不允许更改的,所以我的业务对象“person”不应该有setter。