在我们的应用程序方法中经常返回嵌套的数据结构。我们将它们表示为 DTO,其中一个 DTO 可能包含其他 DTO 或其列表。有问题的方法主要为 GUI 提供要显示的东西。
到目前为止,“内部”DTO 是常规公共类的对象。开发人员很想在各种其他 DTO 类中重用这些内部 DTO。虽然这看起来像是一个受欢迎的代码重用应用程序,但它在仅松散相关的方法之间创建了不必要的依赖关系。
避免这种情况的一种方法是“展平” DTO,使得根本没有嵌套,所有属性都是简单的标量类型。然而,在许多情况下,这似乎是不自然的,例如,当外部和内部 DTO 之间存在 1:n 关系时,导航这样的 DTO 会变得更加麻烦。
所以我们认为,我们可以制作内部类(外部 DTO 的类)的“内部”DTO 实例。这应该以减少代码重用为代价来减少依赖关系。
但后来我们注意到,除非我们将内部类公开,否则内部类的方法不能从外部访问(例如返回此类 DTO 的方法)。但是随后任何人都可以创建这个内部类的实例(尽管它不那么诱人)。
所以基本问题是:
- 以完全独立的方式表示嵌套数据结构的好方法是什么?