Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有效Java:将类作为私有嵌套类(第22项)_Java_Oop - Fatal编程技术网

有效Java:将类作为私有嵌套类(第22项)

有效Java:将类作为私有嵌套类(第22项),java,oop,Java,Oop,如果包专用顶级类(或接口)仅由 一个类,考虑将顶级类设为私有嵌套类 使用它的唯一类别(第22项) 有效Java第二版 参考有效Java中的上述项目。我理解这将促进课程的其他用途。但我对此有两个疑问 这样,我们将把一个具有不同目的的类转移到另一个类中。例如,一个UI类需要一个仅由该类使用的事件侦听器,必须按照上述建议将其移动到该UI类中。那么UI类在原则上就不那么内聚了,因为它服务于UI呈现和事件监听 参考上面的同一个例子,如果我们只移动一次作为内部类使用的类,那么我们将关闭以进行扩展,并打开以

如果包专用顶级类(或接口)仅由 一个类,考虑将顶级类设为私有嵌套类 使用它的唯一类别(第22项)

有效Java第二版

参考有效Java中的上述项目。我理解这将促进课程的其他用途。但我对此有两个疑问

  • 这样,我们将把一个具有不同目的的类转移到另一个类中。例如,一个UI类需要一个仅由该类使用的事件侦听器,必须按照上述建议将其移动到该UI类中。那么UI类在原则上就不那么内聚了,因为它服务于UI呈现和事件监听

  • 参考上面的同一个例子,如果我们只移动一次作为内部类使用的类,那么我们将关闭以进行扩展,并打开以进行修改,比如说我们想要更改不同的侦听器或注入动态侦听器,那么如果不修改UI类,我们可能无法实现。因此,上述方法的可行性如何


  • 当我读那本书时,我是这样理解这一段的:

    如果一个类被另一个类使用,并且没有其他方式可以被其他类以任何方式使用,请将其移动到将其用作内部类的类。这种用法将内部类呈现为封装类的“私有”特性。因此,为了保持东西整洁,有点像封装,作者建议采取行动

    从这个角度来看,这对我来说是有意义的


    简而言之,在任何有意义的地方封装它,但如果没有,不要强迫它。

    当我读那本书时,我是这样理解这一段的:

    如果一个类被另一个类使用,并且没有其他方式可以被其他类以任何方式使用,请将其移动到将其用作内部类的类。这种用法将内部类呈现为封装类的“私有”特性。因此,为了保持东西整洁,有点像封装,作者建议采取行动

    从这个角度来看,这对我来说是有意义的


    简而言之,在任何有意义的地方封装它,但如果没有,不要强迫它。

    当我读那本书时,我是这样理解这一段的:

    如果一个类被另一个类使用,并且没有其他方式可以被其他类以任何方式使用,请将其移动到将其用作内部类的类。这种用法将内部类呈现为封装类的“私有”特性。因此,为了保持东西整洁,有点像封装,作者建议采取行动

    从这个角度来看,这对我来说是有意义的


    简而言之,在任何有意义的地方封装它,但如果没有,不要强迫它。

    当我读那本书时,我是这样理解这一段的:

    如果一个类被另一个类使用,并且没有其他方式可以被其他类以任何方式使用,请将其移动到将其用作内部类的类。这种用法将内部类呈现为封装类的“私有”特性。因此,为了保持东西整洁,有点像封装,作者建议采取行动

    从这个角度来看,这对我来说是有意义的



    简而言之,<强>封装< /强>哪里有意义,但如果没有,不要强迫它。

    这里的关键词是考虑。正如您自己所看到的,在一些情况下可能不应该这样做。请注意,建议中没有使用“内部类”一词。“嵌套类”!=“内部阶级”。您在第二点中谈到了内部类。@JarrodRoberson投票决定重新打开(但可能需要以“征求意见”的形式关闭)。仅仅因为我对嵌套类和内部类之间的混淆发表了评论,并不意味着OP的问题与此相同!这里的关键词是考虑。正如您自己所看到的,在一些情况下可能不应该这样做。请注意,建议中没有使用“内部类”一词。“嵌套类”!=“内部阶级”。您在第二点中谈到了内部类。@JarrodRoberson投票决定重新打开(但可能需要以“征求意见”的形式关闭)。仅仅因为我对嵌套类和内部类之间的混淆发表了评论,并不意味着OP的问题与此相同!这里的关键词是考虑。正如您自己所看到的,在一些情况下可能不应该这样做。请注意,建议中没有使用“内部类”一词。“嵌套类”!=“内部阶级”。您在第二点中谈到了内部类。@JarrodRoberson投票决定重新打开(但可能需要以“征求意见”的形式关闭)。仅仅因为我对嵌套类和内部类之间的混淆发表了评论,并不意味着OP的问题与此相同!这里的关键词是考虑。正如您自己所看到的,在一些情况下可能不应该这样做。请注意,建议中没有使用“内部类”一词。“嵌套类”!=“内部阶级”。您在第二点中谈到了内部类。@JarrodRoberson投票决定重新打开(但可能需要以“征求意见”的形式关闭)。仅仅因为我对嵌套类和内部类之间的混淆发表了评论,并不意味着OP的问题与此相同!谢谢你的回复。但我的问题是,这样做我们是在阻止未来的扩展rt?内部类在今天可能不会被重用,但是将来呢,以及我在问题中提到的场景呢?敏捷思想反对为将来可能的需求开发软件。它提倡将您的设计基于当今的需求。如果需要的话,你可以改变它:也就是说,把你的类移到外面,让它成为一个独立的一等公民,并开放它以供重用