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() {