如果仅使用包私有顶级类(或接口) 一个类,考虑使顶级类成为私有嵌套类 使用它的唯一类(第22项)
有效的Java第二版
从有效的Java参考上面的项目。我知道它会促使课程无法用于其他目的。但我对此有两个疑问,
这样做,我们将把一个不同目的的类移到其他类中。例如,需要仅由该类使用的事件侦听器的UI类必须根据上述建议移动到该UI类中。然后UI类的原则将不那么紧密,因为它提供UI呈现和事件监听。
参考上面的相同示例,如果我们将仅使用一次的类作为内部类移动,那么我们将关闭以进行扩展并打开以进行修改,比如我们想要更改不同的侦听器或注入动态侦听器然后如果不修改UI类,我们可能无法实现。因此,上述方法有多可行?
答案 0 :(得分:3)
当我读到那本书时,我采用了这一段:
如果一个类被另一个类使用,并且没有其他方法可以通过任何方式被其他类使用,则将其移动到将其用作内部类的类。此用法将内部类呈现为封装类的“私有”功能。因此,为了保持整洁,有点类似于封装,作者建议采取行动。
从这个角度来看,这对我来说很有意义。
简而言之,封装哪里有意义,但如果没有,请不要强制它。