在我们的应用程序方法中经常会返回嵌套的数据结构。我们将它们表示为DTO,其中一个DTO可能包含其他DTO或其列表。所讨论的方法主要为GUI提供事物展示。Java中的嵌套数据结构(内部类)
到目前为止,“内部”DTOs是普通公共类的对象。开发人员试图在各种其他DTO类中重用这些内部DTO。虽然这看起来像代码重用的受欢迎应用程序,但它仅在松散的方法之间创建了不必要的依赖关系。
避免这种情况的一种方法是“压平”DTO,使得根本不存在嵌套,并且所有属性都是简单的标量类型。然而,在许多情况下,这看起来不自然,例如,当外部和内部DTO之间存在1:n关系时,导航这样的DTO会变得更加麻烦。所以我们认为,我们可以制作内部类(外部DTO的类)的“内部”DTO实例。这应该以减少代码重用为代价来减少依赖性。
但是后来我们注意到,内部类的方法不能从外部访问(例如返回这样一个DTO的方法),除非我们公开内部类。但是,任何人都可以创建这个内部类的一个实例(尽管它不那么诱人)。
所以基本问题是:
- 什么是代表一个完全自给自足的方式嵌套数据结构的好办法?
您可以轻松地避免创建你的内心通过使构造函数的构造函数成为私有类来从外部类,所以只有封闭类可以创建一些内部类的新实例。 –