【问题标题】:Object creration in Tic tac toe井字游戏中的对象创建
【发布时间】:2013-10-28 22:40:11
【问题描述】:

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

public class Player {
    Symbol symbol;

    public Player() {
        symbol = Symbol.X;
    }
}

如果我有这样的公共构造函数,用户可以继续创建对象,没有办法限制吗?

编辑:

从枚举中提取玩家

public enum Symbol {
    X, O;
}

我希望能够从这里获取符号并在创建时将其分配给玩家对象。

【问题讨论】:

  • 查看单例模式或工厂模式
  • 除非您提供某种控制台,让玩家可以输入您盲目执行的 Java 代码,否则他们将无法创建对象。玩家不是程序员。他们无法访问游戏代码中使用的数据结构。
  • @JohnKugelman 我不太清楚你的意思。据我们所知,OP 可能正在创建一些其他人将使用的库,在这种情况下,这可能是一个有效的问题。
  • @JohnKugelman:我不确定这是您在进行 OO 编程时评估的唯一标准?!

标签: oop


【解决方案1】:

您可以使用factory pattern:

class Player {

    private static int players = 0;

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

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

        throw new TooManyPlayersException(...);
    }

}

【讨论】:

  • Arshajii 考虑了对问题的解释是有意义的(即 OP 意味着“程序员”......并为问题的解释提供了一个很好的答案。他不值得反对试图了解OP真正要求的内容。
  • 见我上面的评论。这里有一个巨大的X-Y problem
  • arshaji, @StephenC:当我认为提问者感到困惑并且答案加剧了这种困惑时,我会否决答案。不过,这只是一票否决。没什么大不了的。
  • @JohnKugelman 否决票本身并不困扰我,我只是对其背后的原因感到有些不安。见stackoverflow.com/help/privileges/vote-down“每当您遇到极其草率、不费吹灰之力的帖子或明显不正确且可能存在危险错误的答案时,请使用您的反对票”。我不相信这个答案属于这一类。由于怀疑它可能会使 OP 混淆而对技术上正确的答案投反对票是滥用反对票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 2015-01-08
相关资源
最近更新 更多