Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop Tic-tac-toe中的物体矫正_Oop - Fatal编程技术网

Oop Tic-tac-toe中的物体矫正

Oop Tic-tac-toe中的物体矫正,oop,Oop,我正在创建一个两人游戏,我希望能够限制用户创建其他玩家对象 public class Player { Symbol symbol; public Player() { symbol = Symbol.X; } } 如果我有一个这样的公共构造函数,用户可以继续创建对象,而没有办法限制它 编辑: 从枚举中提取玩家 public enum Symbol { X, O; } 我希望能够从这里获取符号,并在创建时将其分配给播放器对象。您可以使用: 参

我正在创建一个两人游戏,我希望能够限制用户创建其他玩家对象

public class Player {
    Symbol symbol;

    public Player() {
        symbol = Symbol.X;
    }
}
如果我有一个这样的公共构造函数,用户可以继续创建对象,而没有办法限制它

编辑:

从枚举中提取玩家

public enum Symbol {
    X, O;
}
我希望能够从这里获取符号,并在创建时将其分配给播放器对象。

您可以使用:


参见Singleton或Factory模式除非您提供某种控制台,玩家可以在其中键入盲目执行的Java代码,否则他们将无法创建对象。玩家不是程序员。他们无法访问游戏代码中使用的数据结构。@JohnKugelman我不太清楚你的意思。据我们所知,OP可能正在创建一些其他人将使用的库,在这种情况下,这可能是一个有效的问题。@JohnKugelman:我不确定这是您在进行OO编程时评估的唯一标准?!Arshajii考虑了对问题的合理解释,即OP的意思是程序员。。。为这个问题的解释提供了一个很好的答案。他不应该因为试图理解OP的真正要求而被否决。见我上面的评论。这里有一个巨大的问题。阿尔沙吉,@StephenC:当我认为提问者感到困惑时,我会对答案投反对票,而答案会加剧这种困惑。不过,这只是一票否决票。这没什么大不了的。@JohnKugelman否决票本身一点也不困扰我,我只是对其背后的理由感到有点不安。看见每当你遇到一篇极其草率、不费力气的帖子,或者一个答案明显地、甚至可能是危险地不正确时,请使用你的反对票。我不相信这个答案属于那一类。否决一个技术上正确的答案,因为有人怀疑它可能会混淆OP是在滥用否决票。
class Player {

    private static int players = 0;

    private Player(...) {
        ...
    }

    public static Player newPlayer(...) {
        if (players < MAX_PLAYERS) {
            players++;
            return new Player(...);
        }

        throw new TooManyPlayersException(...);
    }

}