我需要拆分一个大的DTO吗?

sat*_*ana 3 inheritance ooad class dto

我有一个具有 30 个属性的 DTO,需要向其中添加一些属性。许多其他类使用此 DTO,有些类使用 10 到 20 个属性,有些其他类使用全部 30 个属性。

在一个类中,我可以创建一个使用 10 个属性的 DTO,其余 20 个属性将为空吗?

在这种情况下,通过继承或其他方式将 DTO 拆分为 2-3 个 DTO 是一个好方法吗?

Bri*_*ian 5

人们自然不愿意考虑具有 30 个属性的单个 DTO,但这绝不是仅仅因为这个原因就“错误”的选择。想象一个照片文件,它有很多“标签”:相机类型、镜头类型、光圈、模式、尺寸等。这些标签有几十个,将它们全部放在 PhotoDto 中是完全可以的。

仅当有充分的实际设计原因时才拆分 DTO。规模不够,分裂可能会带来不同的困难。

编辑:考虑下游使用也很有帮助,例如,如果 DTO 的属性全部保存在单个数据库表中,那么无论是在概念上还是在形式上,保留 1 DTO -> 1 DB 表结构都可能是额外有利的实用术语(ORM 配置等)。