我应该为我的简单游戏 类 添加界面吗?

Should I add interfaces for my simple game classes?

我正在尝试为一个简单的游戏创建一个 UML class 图。我有三个继承 classes (NPC, Player, Monster) 并且它们应该相互作用(例如在攻击中)。

我想知道我是否应该在我的简单案例中使用接口。还有我怎样才能扩展我的图表?

您的 class Character 专攻:NPC(Non-Player 角色)、PlayerMonster,您想知道您是否需要一个接口:

  • 由于 Monster 似乎是 non-player 字符,它可能应该继承自 NPC 而不是 Character
  • 作为人类玩家,真的不是一个角色,而只是碰巧在游戏中被一个角色所代表,可能是将 Player 和相应的 Character 的职责分开很有趣。所以你会在两者之间有一个简单的关联而不是继承。一个直接的好处是,玩家可以选择喜欢的角色来模仿 him/her.
  • mediator 可用于管理游戏中所有角色之间的交互。你可以创建一个 Colleague 接口,让不同的 class 实现这个接口。但是如果你的 Colleagues 必然全是 Characters,你可以像以前那样依赖超级class。

更一般地说,如果您想解耦 classes,附加接口是一种行之有效的方法。如果您要开发一个要在许多不同游戏中重复使用的游戏引擎,您应该明确地考虑它们:您将拥有一个仅依赖于独立于任何特定游戏的接口的引擎。然后每个游戏都会选择相关的 classes 来实现接口。但是对于您的具体情况,这似乎有点矫枉过正。

话虽这么说,您将面临的主要挑战是您最终会遇到难以发展的深层 class 层次结构。这就是为什么游戏行业更喜欢 entity-component-system pattern 更喜欢组合而不是继承的原因。但这是一个不同的故事,并且有关于该主题的完整书籍 ;-)