这是一个一般性问题,但我会先给你我的具体问题:
我正在为我的程序编写一个 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 的大规模布局。这表明我应该创建单独的类TitleLabel
等SequenceTextField
,每个类都有一个draw
方法,然后drawGuiFrame
在Layout
类中只有一个方法来调用所有这些draw
方法(我什至可以创建一个抽象类,这些新类可以扩展)。
这还有其他一些直接的优势。假设我想合并一个复选框系统以及我的标签和文本区域。然后我可以将它声明为它自己的类并赋予它 propertiesisOptionA
等isOptionB
来记录选中了哪个复选框。
但我有点不愿意以这种方式实现 GUI,原因有两个。首先,创建如此多的新类会使代码库中包含大量小.java
文件。其次,这些将是非常“一次性”的类:我永远不会再使用代码,因为这些类将纯粹为这个特定的 GUI 设计。
那么 - 多少类太多了?是否可以仅仅因为您认为它们应该是类而创建许多只会使用一次的新类?正如我所说,尽管我欢迎针对这个特定问题的建议,但我也在寻找更多关于何时适合添加新类的通用指针。