无证的,神秘的类 - 垃圾,或者我不知道的设计模式?

时间:2011-06-15 18:02:27

标签: java swing

我继承了以下代码:

(有些名字被改变以保护无辜者。)

package foo.bar.baz;
import javax.swing.JPanel;

//Main panel in the GUI
class DemoRootPanel extends JPanel {
    private final MainGUIClass demo;

    DemoRootPanel(MainGUIClass demo) {
        super();   
        this.demo = demo;
    }

    public MainGUIClass getDragAndDropPanelsDemo() {
        return demo;
    }
}

我没有立即明白为什么它很重要,所以我通过源树看到它被使用了。这些都是结果:

$ ack -i rootpanel
DemoRootPanel.java
5:class DemoRootPanel extends JPanel {
8:    DemoRootPanel(MainGUIClass demo) {

MainGUIClass.java
70: private final DemoRootPanel rootPanel;
124:        rootPanel = new DemoRootPanel(MainGUIClass.this);
821:                    containerPanels.add(new ContainerPanel(rootPanel));
846:                            containerPanels.add(new ContainerPanel(rootPanel));
1777:               ContainerPanel newContainer = new ContainerPanel(rootPanel);

ContainerPanel.java
30: DemoRootPanel rootPanel;
49: public ContainerPanel(DemoRootPanel rootPanel) {
51:     this.rootPanel = rootPanel;

$ ack getDragAndDropPanelsDemo
DemoRootPanel.java
13:    public PileSortGUI getDragAndDropPanelsDemo() {

据我所知,这完全没必要。但这是我的第一份工作,我还没上过大学,等等,所以我想知道这不是一些重要而又不熟悉的成语。

PS - 我也是SO的新手。我相信这个问题可以肯定地回答,但它看起来似乎不那么正常。如果不行,请告诉我,我会把它取下来。 (或者只是修改它:P)

1 个答案:

答案 0 :(得分:1)

看起来这只是一个空的JPanel,它还包含对主类对象的引用。

可以简单地用普通JPanel替换它(省略demo参数)。

可能有人计划将这个课程用于某个目标但稍后会忘记这一点。或者有人误解并认为每个使用的GUI对象都必须有自己的子类。评论//Main panel in the GUI看起来像这样。

如果你有人编写这段代码,请问他(或她) - 否则我会用一个简单的JPanel替换它的使用来减少类的数量。 (你有一个版本控制系统,不是吗?)