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