假设我有一个C类在做一些工作。
为此,我需要一个非常简单的助手类H(例如,表示一对或三元组)。H只在C.
我会把H放进C.
class C
{
void foo ()
{
// ... use H to do the job more easy ...
}
class H
{
// very simple and contained stuff
}
}把H放进C里面是个好主意吗?我这样做是为了把它控制住,在我认为它应该在的地方,而在别的地方。但我不确定这是一个好的设计。
发布于 2019-05-15 07:19:24
更多的是增编:
首先:如果假设H对象存在而没有拥有C实例,那么H应该是static。你甚至可能想让这件事变得私密。
然后,请记住:这里有一个内部类,所以H的全名实际上类似于任何东西。
如果你在某一时刻决定H有足够的其他方面使它值得成为“它自己的”东西呢?然后,您可能需要更多的代码,才能将您的任何内容.Package.com.C.H转换为任何.Package.com.H。
因此,你可以考虑把H变成一个托普莱尔类,而不是公开它。所以,您可以将其保存在C.java中,而不是作为内部类!
(当然,这确实取决于“样式”,我认为Google编码标准告诉您,每个文件只有一个顶级类)
最后一句话:如果有一种方法可以把你的H类变成其他地方可以使用的东西,那么我会马上把它变成自己的公共类。如果重用看起来是合理的,那么编写您的代码,这样就可以很容易地重用它!一个3值元组听起来不像是对任何东西都很具体,所以它听起来像是重复使用的候选。
发布于 2019-05-15 06:48:09
这是一个很好的设计。类、变量或方法的可见性应该始终限制在唯一需要的范围内,而不是更多。
如果以后需要在内部类之外使用该类,只需将其移到其他地方即可。
发布于 2019-05-15 06:53:21
是的是很好的设计。您要做的是称为内部类.you也可以使其成为私有的。如果它不需要对外部类成员的独占访问,那么将它变成一个静态嵌套类,它将需要更少的内存。
https://stackoverflow.com/questions/56143182
复制相似问题