是否有办法确定;“主要”;是安卓还是Java

是否有办法确定;“主要”;是安卓还是Java,java,android,Java,Android,我最近写了一个Java扑克牌游戏,所有的游戏逻辑都写在一个叫做game的类中。在可能的情况下,我尝试将所有GUI处理保持在此类之外。我现在正在尝试将这个游戏转换为Android应用程序 在PlayAutomaticUrn()方法中(Android活动和Java桌面应用程序都使用),如果电脑玩家希望宣布他们赢了,我会调用游戏中的另一个方法。这将使用我创建的SoundEffect类(使用javax.sound.sampled.*库)根据结果播放两个声音效果 与其完全重写代码以将声音效果移回调用方法(

我最近写了一个Java扑克牌游戏,所有的游戏逻辑都写在一个叫做game的类中。在可能的情况下,我尝试将所有GUI处理保持在此类之外。我现在正在尝试将这个游戏转换为Android应用程序

在PlayAutomaticUrn()方法中(Android活动和Java桌面应用程序都使用),如果电脑玩家希望宣布他们赢了,我会调用游戏中的另一个方法。这将使用我创建的SoundEffect类(使用javax.sound.sampled.*库)根据结果播放两个声音效果

与其完全重写代码以将声音效果移回调用方法(我想我必须从我的announceWin()方法返回一个状态,然后从playdautomaticturn()返回这个状态),还有没有一种简洁的方法来确定主调用应用程序是否是Android应用程序

通过这种方式,我可以将if或case语句放在适当的位置,并以不同的方式处理声音效果

例如

还是在类的开头创建一个常量声明,并用Java和Android版本的不同值编译它的唯一方法

例如,为Android编译一个版本(尚未实现Android声音)


感谢您提供的任何帮助和建议。

大量的
如果代码周围的
是不好的做法,我建议创建捕获平台特定行为的界面,如

interface SoundService {
   playSound(/* ... */);
}

通过这种方式,您可以创建多个接口实现,包括针对懒惰者的一个简单的
NoOp
实现,并将所有特定于平台的代码放在非常显眼的位置。

大量的
如果代码周围的
是不好的做法,我建议创建接口它捕获特定于平台的行为,如

interface SoundService {
   playSound(/* ... */);
}
通过这种方式,您可以创建多个接口实现,包括针对懒人的一个简单的
NoOp
实现,并将所有特定于平台的代码放在非常显眼的位置。

在黑暗中拍摄

您是否可以使用反射为仅在android中可用的库生成布尔值:

            boolean isAndroid = false;
            try {
                    Context.class.getMethod("getApplicationContext", null);
                    isAndroid = true;
            } catch (NoSuchMethodException e) {
                    isAndroid = false;
            } catch (Exception e) {
                    isAndroid = false;
            }
暗中拍摄

您是否可以使用反射为仅在android中可用的库生成布尔值:

            boolean isAndroid = false;
            try {
                    Context.class.getMethod("getApplicationContext", null);
                    isAndroid = true;
            } catch (NoSuchMethodException e) {
                    isAndroid = false;
            } catch (Exception e) {
                    isAndroid = false;
            }

使用Waldheinz和Blundell的想法,我们可以创建基本的工厂模式,我们可以看到游戏不需要知道平台依赖性…所有健全的对象初始化都在工厂中完成,创建什么样的对象的决定将是工厂的决定…Blundell的方法也可以用于相同的目的
请查找示例工厂模式代码

使用Waldheinz和Blundell的想法,我们可以创建基本的工厂模式,我们可以看到,游戏不需要知道平台依赖性…所有声音对象初始化都在工厂中完成,创建什么类型的对象的决定将是工厂的决定…布伦德尔的方法也可以用于相同的目的
请查找示例工厂模式代码

@Blundell您已获得我的个人体育精神徽章:-)谢谢大家。目前,我已经采取了“以后再处理此问题”的方法,并删除了soundeffect命令,但看起来我稍后会回到界面方法。@Blundell您已获得我的个人体育精神徽章:-)谢谢大家。目前,我已经采取了“在以后的方法中忽略这个问题”并删除了soundeffect命令,但看起来我稍后会回到界面方法。