- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
If a package-private top-level class (or interface) is used by onlyone class, consider making the top-level class a private nested classof the sole class that uses it (Item 22)
Effective Java 2nd edition
以上内容引用Effective Java。我知道这将促进类(class)无法用于其他目的。但我对此有两个疑问,
这样做,我们将把一个具有不同目的的类移动到其他类中。例如,一个 UI 类需要一个仅由该类使用的事件监听器,必须按照上述建议将其移至该 UI 类中。那么原则上 UI 类的内聚力会较低,因为它服务于 UI 渲染和事件监听。
引用上面的相同示例,如果我们将仅使用一次的类移动为内部类,那么我们将关闭扩展并开放修改,假设我们想要更改不同的监听器或注入(inject)动态监听器如果不修改 UI 类,我们可能无法实现。那么上述方法的可行性如何?
最佳答案
当我读那本书时,我是这样理解这一段的:
如果一个类被另一个类使用,并且没有其他方法可以通过任何其他方式使用它,则将其移动到使用它作为内部类的类。这种用法将内部类呈现为封装类的“私有(private)”功能。因此,为了保持整洁,有点类似于封装,作者建议采取这一行动。
从这个角度来看,这对我来说是有道理的。
简而言之,封装任何有意义的地方,但如果没有意义,就不要强制它。
关于java - 有效Java : Making a class as private nested class (Item 22),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200415/
我是一名优秀的程序员,十分优秀!