And*_*ină -2 java oop static class object
所以,我有几类,比如MainWindow,MenuPanel,GamePanel,GameEngine,Player等...
我的问题是,虽然我已经阅读了很多关于静态vs实例的内容,但应该更推荐使用它,根据我的一行看起来像这样:
MainWindow.getGamePanel().getPlayer1().getName().toLowerCase().compareTo(...);
要么 MainWindow.getGamePanel().getLabels()[0].getIcon();
你认为这是一个很好的做法试图让自己不要使用静态,每一个对象有不同的属性,事情不是一概而论,而不是可能宣布labels或players与names静态且具有更易于重用和读取的代码?
我的想法是使用这些长代码,因为例如在(更像逻辑)类中创建一个GamePanel(可视类)对象肯定会很尴尬.所以我只是创建了每个类的一个对象(不是主类,只是JFrame类)并为它们中的每一个创建.PlayerMainWindow static getters
MainWindow.getGamePanel().getPlayer1().getName().toLowerCase().compareTo(...);
Run Code Online (Sandbox Code Playgroud)
这是对德米特定律的经典违反,有时表达为"问,不看".调用这些getter的类对程序的整体结构有太多的了解,这使得它变得脆弱.如果这些类之间的关系发生变化,那么依赖于这些链式getter的所有代码都将会中断.
"问,不看"背后的想法是,调用这些getter来获取玩家名称的类应该要求玩家名称作为构造函数参数.如果这导致具有大量参数的构造函数,则该类可能违反单一责任原则.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |