首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小助手类的OOP设计

小助手类的OOP设计
EN

Stack Overflow用户
提问于 2019-05-15 06:45:30
回答 3查看 111关注 0票数 5

假设我有一个C类在做一些工作。

为此,我需要一个非常简单的助手类H(例如,表示一对或三元组)。H只在C.

我会把H放进C.

代码语言:javascript
复制
class C
{
   void foo ()
   {
     // ... use H to do the job more easy ...
   }

   class H
   {
      // very simple and contained stuff
   }
}

把H放进C里面是个好主意吗?我这样做是为了把它控制住,在我认为它应该在的地方,而在别的地方。但我不确定这是一个好的设计。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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值元组听起来不像是对任何东西都很具体,所以它听起来像是重复使用的候选。

票数 4
EN

Stack Overflow用户

发布于 2019-05-15 06:48:09

这是一个很好的设计。类、变量或方法的可见性应该始终限制在唯一需要的范围内,而不是更多。

如果以后需要在内部类之外使用该类,只需将其移到其他地方即可。

票数 6
EN

Stack Overflow用户

发布于 2019-05-15 06:53:21

是的是很好的设计。您要做的是称为内部类.you也可以使其成为私有的。如果它不需要对外部类成员的独占访问,那么将它变成一个静态嵌套类,它将需要更少的内存。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56143182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档