【发布时间】:2015-05-22 18:46:00
【问题描述】:
我正在用 Java 创建一个在后台播放音乐的简单游戏。
Music 类包含那些静态方法:
- playMusic();
- stopMusic();
- changeVol(int vol);
一开始我正在创建“Music”类的新对象,并且正在调用静态方法“playMusic”:
new Music();
Music.playMusic();
这些方法之所以是静态的,是因为我想在应用程序启动时开始播放音乐,但是您可以在设置中选择是否播放音乐。静态方法提供了最简单的方法,因为 'Settings' 类没有 'main' 方法。
音乐类代码:
public class Music {
/// ... variables
public Music(){
try{
/// ... Preparing clip to play
} catch (Exception e){
/// ... Catching exception
}
}
public static void playMusic(){
/// ... starting music
}
public static void stopMusic(){
/// stoping music
}
public static void changeVol(int vol){
/// changing volume
}}
它工作得很好,但我想知道它是否符合 OOP 和 Java 标准?
完整音乐课代码:http://pastebin.com/d9XYX1gG
【问题讨论】:
-
如果不使用对象,为什么还要创建它?这没有意义。
-
即使没有看到你的方法里面有什么,它看起来也很臭。我认为如果您重新编写逻辑以使用实例方法,它会更清晰。这有什么问题?只需在应用程序启动时创建
Music的实例。 -
单例更适合您的音乐播放器,因为您可以在需要时保存音乐播放器的状态,而不是拥有丑陋的静态类成员(并且仍然可以全局访问)
-
有人说使用过多的静态方法违反OOP...
-
无需创建对象。所有方法都是静态的,您可以像在这里一样通过它们的类名直接调用它们。 Music.playMusic();