Недокументированный, таинственный класс - мусор или шаблон дизайна, который я не знаю? - PullRequest
3 голосов
/ 15 июня 2011

Я унаследовал следующий код:

(Некоторые имена изменены, чтобы защитить невинных.)

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 Ответ

1 голос
/ 15 июня 2011

Похоже, что это просто пустая JPanel, которая дополнительно содержит ссылку на объект основного класса.

Возможно, это можно было бы просто заменить на простой JPanel (пропуская demo аргумент).

Возможно, кто-то планировал использовать этот класс для какой-то цели, но позже забыл об этом.Или кто-то неправильно понял и подумал, что у каждого объекта GUI, который он использует, должен быть собственный подкласс.Комментарий //Main panel in the GUI выглядит следующим образом.

Если у вас есть кто-то, кто написал этот код, спросите его (или ее) - в противном случае я бы просто заменил его использование простым JPanel, чтобы сократить количество классов.(У вас есть система контроля версий, не так ли?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...