2013-10-28 115 views
-5

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

public class Player { 
    Symbol symbol; 

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

如果我有一个公共的构造这样,用户可以随时创建对象和将没有办法限制呢?

编辑:

提取由枚举型

public enum Symbol { 
    X, O; 
} 

球员我希望能够从这里得到象征,它创建时将其分配给玩家的对象。

+0

见单身或工厂模式 –

+1

除非你提供某种控制台,玩家可以在Java代码中键入您盲目执行,他们不会要能够创建对象。玩家不是程序员。他们无法访问游戏代码中使用的数据结构。 –

+0

@JohnKugelman我不太清楚你的意思。就我们所知,OP可能会创建一些其他人将使用的库,在这种情况下,这可能是一个有效的关注点。 – arshajii

回答

4

可以使用​​:

class Player { 

    private static int players = 0; 

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

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

     throw new TooManyPlayersException(...); 
    } 

} 
+0

Downvoter:请发表评论。 – arshajii

+1

Arshajii考虑了有意义问题的解释(即OP *意味着*“程序员”......并为该问题的解释提供了一个很好的答案。他**不值得*尝试*了解OP的真正要求。 –

+0

看到我上面的评论。这里有一个巨大的[XY问题](http://mywiki.wooledge.org/XyProblem)。 –