这是一个设计问题,我将尽可能清楚地描述它,但我不确定如何称呼我面临的问题。
我正在开发一款视频游戏,设置和玩游戏涉及多个步骤。我想将这些步骤中的每一个都包装在某种对象中,以保持一切清洁。
我选择将游戏流程拆分为会话、回合和生成。游戏的会话是最高范围级别,您可以配置哪些玩家处于活动状态(通过加入屏幕)然后继续开始一轮。您可以在单个会话中进行多轮比赛,并且每一轮都将继承全局会话数据。同样,您可以在每一轮中多次死亡和重生,从轮次和会话中继承数据。
所以想象某种免费的。
- 第 1 节
- 第 2 节
- A轮
- B轮
- 产生 1
- 产卵 2
- C轮
- 第三节
Spawn 1 将有权访问 Round B 和 Session 2 的数据。
这似乎是一个非常干净的设计。我可以将会话范围的数据保存在一个地方,并使该对象在整个会话期间保持活动状态,每一轮都分支并继承这些数据。
现在有趣的问题。就像我之前说的,会话包含一组玩家(加入游戏并在整个会话期间处于活动状态的玩家)。回合还需要保留一些关于每个玩家的额外数据,但这些数据只存在于回合内(例如最后一个生成点,或当前分数)。我想遵循相同的模式并创建另一个类,该类将保存此轮特定数据。
这在维护集合时出现故障。因为会话包含玩家的权威列表,并且每一轮都提供额外的附加数据,所以该轮是否应该只更新 SessionPlayer 的成员?回合是否应该有自己的球员名单,每个球员都有回合级别的数据和指向会话级别数据的指针?它们是否应该包含具有匹配 ID 的单独集合?
这似乎可以通过一种巧妙的设计模式来解决,但我一直找不到。
总结一下:如何临时包装一个包含集合的对象,同时包装该集合的所有元素?
我希望我解释得当。谢谢您的帮助!