【发布时间】:2016-12-03 11:50:01
【问题描述】:
所以我有一些课程,例如MainWindow、MenuPanel、GamePanel、GameEngine、Player 等等......
我的问题是,虽然我已经阅读了很多关于静态与实例的信息,但应该更推荐使用它,根据我的其中一条线如下所示:
MainWindow.getGamePanel().getPlayer1().getName().toLowerCase().compareTo(...);
或MainWindow.getGamePanel().getLabels()[0].getIcon();
您是否认为这是一个很好的做法,尽量不使用每个对象都有不同属性且事物没有泛化的静态,而不是声明 labels 或 players 和 namesstatic 并拥有更容易重用和阅读的代码?
我的想法是我使用这些长代码,因为在Player中创建GamePanel(视觉类)对象肯定会很尴尬@(更像是一个逻辑) 类例如。所以我只是创建了MainWindow 中每个类的一个对象(不是主类,只是 JFrame 类) 并为每个类创建了static getters。
【问题讨论】:
-
我很难说出你在描述什么......听起来你的代码结构很奇怪。
MainWindow.getGamePanel().getPlayer1().getName().toLowerCase().compareTo(...);对我来说看起来很可疑......看起来你仍然在用静态引用做所有事情,你只有一个返回特定实例的顶级静态方法。不看更多代码很难判断,但我敢打赌,事情可以重新构造,这样你就根本不需要那些长的访问链。 -
像
MainWindow.getGamePanel().getPlayer1().getName().toLowerCase().compareTo(...);这样的行也可能是由糟糕的设计引起的,而不是只是使用实例。
标签: java class oop object static