java - 有多少个类太多了?什么时候添加新类?

时间:2013-07-29 14:40:05

标签: java oop user-interface

这是一个一般性的问题,但我会首先告诉你我的具体问题:

我正在为我的程序编写一个GUI,用于一个程序,该程序将采用框架的形式,其中放置了各种小部件(标签,文本字段等)。它最初将使用javax.swing库,但我在库和GUI本身之间设置了一层抽象,以便更容易创建执行相同操作的Web应用程序。

我希望有一个代表GUI布局的类:也就是说,它应该包含有关各种标签,按钮等放置在内容窗格中的位置的所有信息。目前,我正在考虑的实施如下:

class Layout
{
  public MyLabel titleLabel;
  public myTextField sequenceTextField;
  [...]

  public void drawTitleLabel()
  {
    titleLabel = new MyLabel("This is the title.");
    titleLabel.setLocation(wherever);
    titleLabel.draw();
  }

  public void drawSequenceTextField()
  {
    sequenceTextField = new MyTextField();
    [...]
    sequenceTextField.draw();
  }

  [...]

  public void drawGuiFrame()
  {
    drawTitleLabel();
    drawSequenceTextField();
    [...]
  }
}

因此,我将内容窗格上的每个窗口小部件声明为类Layout的字段,然后创建绘制每个窗口小部件的方法drawWidgetName。最后,我创建了一个方法,调用每个draw...方法以绘制整个GUI。

但这似乎不对。 draw...方法感觉好像它们应该是各个小部件本身的方法,而不是整个GUI的大规模布局。这表明我应该创建单独的类TitleLabelSequenceTextField等,每个类都使用draw方法,然后在drawGuiFrame中使用Layout方法调用所有这些draw方法的类(我甚至可以创建这些新类可以扩展的抽象类)。

这还有其他一些直接优势。假设我想要合并一个复选框系统以及我的标签和文本区域。然后我可以将其声明为自己的类,并为其提供属性isOptionAisOptionB等,以记录选中的复选框。

但我有点不愿意以这种方式实现GUI,原因有两个。首先,创建这么多新类会使代码库混乱,包含许多小.java个文件。其次,这些将是非常“单一使用”类:我永远不会再使用代码,因为类将纯粹为这个特定的GUI设计。

那么 - 有多少课程太多了?是否可以创建许多只会因为你觉得应该成为类而只使用一次的新类?正如我所说,虽然我欢迎特定于这个特定问题的建议,但我也在寻找关于何时适合添加新类的更一般的指示。

2 个答案:

答案 0 :(得分:8)

对我来说,单独的课程似乎是正确的方法。您可以在 packages modules 子模块中组织这些类,这样它们就不应该“混乱代码库”。 java中的大型应用程序很容易拥有许多类,这些类只能由单个应用程序使用。这就是java作为一种语言和java生态系统整体运作的方式。

在java中,通常认为你拥有的粒度级布局越多越好。

答案 1 :(得分:3)

我自己喜欢为每个新引入的概念创建一个类。通常一个类可以任意长,特别是如果你在其中使用大量硬编码数据。你必须注意神的物体http://en.wikipedia.org/wiki/God_object

如果某个类中有太多逻辑,那么阅读就会变得困难得多。如果你觉得某个类变得太大,那么看看该类中是否有可以拥有自己类的逻辑。