我一直在谷歌上寻找可能在嵌套课程中获得的优势。关于如何做到这一点有很多例子,但我没有找到在另一个内部声明一个类的原因。我甚至咨询了我刚刚到达的“Code Complete”,但也没有提到。我可以看到它更难阅读的缺点。
答案 0 :(得分:11)
通常,嵌套类只是为了支持其容器类的功能,并且它本身没有可行性。例如,它可以用于收集大量参数用于初始化,从而保持主类的构造函数可管理;或者它可以继承以定义支持主类的专用集合。
从语义上讲,单独的类没有区别,但是嵌套会发出一个明确的消息,即该类不能单独使用。
答案 1 :(得分:2)
有几个设计决策以制作嵌套类结束:
所以嵌套类背后有两个原则:依赖和更好的组织
答案 2 :(得分:0)
使用它们,如果父类需要一些模型才能工作,而不是所有其他类。所以一些数据的内部表示/帮助。
答案 3 :(得分:0)
我通常使用它们声明为私有,因此它们可以用于仅在外部类中需要的一些功能,保持名称空间不需要的辅助类。
答案 4 :(得分:0)
从我的角度来看,嵌套类不是强制性的。我通常只在它只是一个小对象时才嵌套一个类,只与一个特定的类相关。
答案 5 :(得分:0)
您可以使用嵌套类来模拟外部类实现中涉及的概念,但是与外部类密切相关,以至于嵌套类在任何其他上下文中使用都没有意义。嵌套类具有可见性,并且可以明确地依赖于不属于其公共API的外部类的细节。
一种常见模式是嵌套类实现公共接口,外部类通过返回类型为公共接口的方法公开嵌套类的实例。迭代器模式就是其中的一个例子。