这是一个一般性的问题,但我会首先给你我的具体问题:
我正在为我的程序编写一个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方法,然后在Layout类中只有一个drawGuiFrame方法调用所有这些绘制方法(我甚至可以创建一个这些新类的抽象类)可以延长).
这还有其他一些直接优势.假设我想要合并一个复选框系统以及我的标签和文本区域.然后我可以声明它作为自己的类并给它属性isOptionA,isOptionB等来记录勾选了哪个复选框.
但我有点不愿意以这种方式实现GUI,原因有两个.首先,创建这么多新类会使代码库与许多小的.java文件混乱.其次,这些将是非常“单一使用”的类:我永远不会再使用代码,因为类将纯粹为这个特定的GUI设计.
那么 – 有多少课程太多了?可以创建许多只会因为你认为应该是类而只使用一次的新类吗?正如我所说,虽然我欢迎特定于这个特定问题的建议,但我也在寻找关于何时适合添加新类的更一般的指示.