我应该为我的简单游戏 类 添加界面吗?
Should I add interfaces for my simple game classes?
我正在尝试为一个简单的游戏创建一个 UML class 图。我有三个继承 classes (NPC
, Player
, Monster
) 并且它们应该相互作用(例如在攻击中)。
我想知道我是否应该在我的简单案例中使用接口。还有我怎样才能扩展我的图表?
您的 class Character
专攻:NPC
(Non-Player 角色)、Player
和 Monster
,您想知道您是否需要一个接口:
- 由于
Monster
似乎是 non-player 字符,它可能应该继承自 NPC
而不是 Character
- 作为人类玩家,真的不是一个角色,而只是碰巧在游戏中被一个角色所代表,可能是将
Player
和相应的 Character
的职责分开很有趣。所以你会在两者之间有一个简单的关联而不是继承。一个直接的好处是,玩家可以选择喜欢的角色来模仿 him/her.
- mediator 可用于管理游戏中所有角色之间的交互。你可以创建一个
Colleague
接口,让不同的 class 实现这个接口。但是如果你的 Colleagues
必然全是 Characters
,你可以像以前那样依赖超级class。
更一般地说,如果您想解耦 classes,附加接口是一种行之有效的方法。如果您要开发一个要在许多不同游戏中重复使用的游戏引擎,您应该明确地考虑它们:您将拥有一个仅依赖于独立于任何特定游戏的接口的引擎。然后每个游戏都会选择相关的 classes 来实现接口。但是对于您的具体情况,这似乎有点矫枉过正。
话虽这么说,您将面临的主要挑战是您最终会遇到难以发展的深层 class 层次结构。这就是为什么游戏行业更喜欢 entity-component-system pattern 更喜欢组合而不是继承的原因。但这是一个不同的故事,并且有关于该主题的完整书籍 ;-)
我正在尝试为一个简单的游戏创建一个 UML class 图。我有三个继承 classes (NPC
, Player
, Monster
) 并且它们应该相互作用(例如在攻击中)。
我想知道我是否应该在我的简单案例中使用接口。还有我怎样才能扩展我的图表?
您的 class Character
专攻:NPC
(Non-Player 角色)、Player
和 Monster
,您想知道您是否需要一个接口:
- 由于
Monster
似乎是 non-player 字符,它可能应该继承自NPC
而不是Character
- 作为人类玩家,真的不是一个角色,而只是碰巧在游戏中被一个角色所代表,可能是将
Player
和相应的Character
的职责分开很有趣。所以你会在两者之间有一个简单的关联而不是继承。一个直接的好处是,玩家可以选择喜欢的角色来模仿 him/her. - mediator 可用于管理游戏中所有角色之间的交互。你可以创建一个
Colleague
接口,让不同的 class 实现这个接口。但是如果你的Colleagues
必然全是Characters
,你可以像以前那样依赖超级class。
更一般地说,如果您想解耦 classes,附加接口是一种行之有效的方法。如果您要开发一个要在许多不同游戏中重复使用的游戏引擎,您应该明确地考虑它们:您将拥有一个仅依赖于独立于任何特定游戏的接口的引擎。然后每个游戏都会选择相关的 classes 来实现接口。但是对于您的具体情况,这似乎有点矫枉过正。
话虽这么说,您将面临的主要挑战是您最终会遇到难以发展的深层 class 层次结构。这就是为什么游戏行业更喜欢 entity-component-system pattern 更喜欢组合而不是继承的原因。但这是一个不同的故事,并且有关于该主题的完整书籍 ;-)