【发布时间】:2017-03-11 16:35:56
【问题描述】:
假设我正在制作一个游戏:
public class Game {
Board board;
public ArrayDeque<Player> players;
//Players can have 'knights' and the one with the largest number
//is referenced by the game.
public Player playerWithLargestArmy;
...
}
一开始,当这样的游戏被初始化时,没有玩家可以拥有最大的军队(玩家只有在拥有一定数量的骑士时才拥有一支“军队”)。我想为 playerWithLargestArmy 分配一个值,但我不确定是什么。我也不想使用null,因为我可以留下隐式赋值来做到这一点(无论如何使用null都是不好的做法)。
我正在找人向我解释如何解决这个问题。我查找了工厂和建筑商,但我不确定他们是否能处理这种延迟的任务。对于上下文,每个玩家都有一个 int 字段,指定他们有多少骑士。
我可以为每个玩家使用一个布尔值来解决这个问题,说明他们是否拥有最大的军队,但是你需要遍历玩家来找到那个玩家,这并不理想。即使就我而言,这不是一个巨大的牺牲,我仍然想知道以供将来参考。
【问题讨论】:
-
是的,我确实在堆栈溢出时查看了这个问题。找不到任何东西。不会问我有没有。
-
什么时候使用
null成为“一种不好的做法”? -
您可能想查看空对象模式en.wikipedia.org/wiki/Null_Object_pattern。
-
@DanielSoutar 但是,人们不应该从字面上理解这个哲学建议。在某些情况下,
null是正确的选择。 -
@DanielSoutar 我添加了一个包含示例的答案。但 Null Object 模式正好适合您的情况。
标签: java null variable-assignment factory builder