关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
8 年前关闭。
Improve this question
这是一个一般性问题,但我会先给你我的具体问题:
我目前正在为我的程序编写一个 GUI,该程序将采用框架的形式,上面放置有各种小部件(标签、文本字段等)。它最初将使用 javax.swing
库,但我在库和 GUI 本身之间添加了一个抽象层,以便更轻松地创建执行相同操作的 Web 应用程序。
我想要一个代表 GUI 布局的类:也就是说,它应该包含有关各种标签、按钮等在内容 Pane 上的位置的所有信息。目前,我正在考虑的实现如下:
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();
[...]
}
}
所以我将内容 Pane 上的每个小部件声明为类
Layout
的一个字段。 ,然后创建方法 drawWidgetName
绘制每个小部件。最后,我创建了一个方法来调用 draw...
方法来绘制整个 GUI。不过,这似乎是错误的。
draw...
方法感觉好像它们应该是单个小部件本身的方法,而不是整个 GUI 的大规模布局。这表明我应该创建单独的类 TitleLabel
, SequenceTextField
等等,每个都有一个 draw
方法,然后只有一个 drawGuiFrame
Layout
中的方法调用所有这些的类 draw
方法(我什至可以创建一个抽象类,这些新类可以扩展)。这样做还有其他一些直接优势。假设我想合并一个复选框系统以及我的标签和文本区域。然后我可以将它声明为它自己的类并赋予它属性
isOptionA
, isOptionB
等记录勾选了哪个复选框。但我有点不愿意以这种方式实现 GUI,有两个原因。首先,创建如此多的新类会使代码库中包含许多小的
.java
杂乱无章。文件。其次,这些将是非常“一次性”的类:我永远不会再使用这些代码,因为这些类将纯粹是为这个特定的 GUI 设计的。那么 - 多少课太多了?仅仅因为你觉得它们应该是类,就可以创建许多只使用一次的新类吗?正如我所说,虽然我欢迎针对这个特定问题的建议,但我也在寻找关于何时适合添加新类的更一般性的指示。
最佳答案
拥有单独的类(class)对我来说似乎是正确的方法。您在包、模块和子模块中组织类,因此它们真的不应该“弄乱代码库”。 Java 中的大型应用程序很容易拥有大量可能仅由该单个应用程序使用的类。这几乎是 Java 作为一种语言和 Java 生态系统作为一个整体的工作方式。
在java中,通常认为类布局越细粒度越好。
关于java - 多少类太多了?什么时候适合添加新类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926918/