Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有文档记录的神秘类——垃圾,或者我不知道的设计模式';我不知道?_Java_Swing - Fatal编程技术网

Java 没有文档记录的神秘类——垃圾,或者我不知道的设计模式';我不知道?

Java 没有文档记录的神秘类——垃圾,或者我不知道的设计模式';我不知道?,java,swing,Java,Swing,我继承了以下代码: (为了保护无辜,一些名字被改了。) 我没有马上明白为什么它很重要,所以我浏览了源代码树以查看它的使用情况。这些都是结果: $ ack -i rootpanel DemoRootPanel.java 5:class DemoRootPanel extends JPanel { 8: DemoRootPanel(MainGUIClass demo) { MainGUIClass.java 70: private final DemoRootPanel rootPanel;

我继承了以下代码:

(为了保护无辜,一些名字被改了。)

我没有马上明白为什么它很重要,所以我浏览了源代码树以查看它的使用情况。这些都是结果:

$ 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;

就我看来,这完全没有必要。但这是我的第一份工作,我还没有上过大学,等等,所以我想知道这是否是一个对我来说重要但陌生的习语


PS-我也是一个比较新的人。我相信这个问题可以得到肯定的回答,但它看起来确实不如正常情况下那么专业。如果不行,告诉我,我会把它取下来。(或者只是mod it:P)

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

这可能只是简单地用一个普通的
JPanel
来代替(使用
demo
参数)

可能是有人计划为了某个目标而使用这个类,但后来忘记了这一点。或者有人误解了,认为用户使用的每个GUI对象都必须有自己的子类。GUI中的注释
//主面板如下所示


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

“我没有马上明白为什么它很重要”
“就我看来,它完全没有必要”
您所指的it是什么?DemoRootPanel.java--整个类。如果没有看到
MainGUIClass的代码,则无法确定其意图。
MainGUIClass
是否继承了可以放入
ContainerPanel
的内容?显然,它正在
ContainerPanel
类的构造函数中使用,因此您不能仅仅删除该类。是否可以删除该类主要取决于软件的体系结构和设计。
MainGUIClass
扩展了
JFrame
,是主窗口。它包含多个面板,其中一个包含多个
ContainerPanel
s@Bala我看到它被用在
ContainerPanel
的构造函数中,但我也看到
ContainerPanel
从不使用它。据我所知,使用
DemoRootPanel
的原因是要有一个
JPanel
可以访问
MainGUIClass
——除了我使用的任何组件已经可以通过重复应用
getParent()
来访问\n我只是担心它是着眼于未来而建造的,我只是不知道(现在)它会有什么用处。这些听起来像是似是而非的理论。所有以前的开发人员都不在了,所以我将删除该类并信任svn,就像您建议的那样。谢谢
$ 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() {