我正在设计一个基于 Linq2SQL 引擎的游戏。
其他对象之间的游戏有用户和 NPC(非游戏角色)。
用户和 NPC 的能力有些不同,但它们也有一些共同的属性,例如生命值或伤害量。
这些活动是通过类似的方法完成的void AttackUser(User attacker, User target)
。
这里的问题是 NPC 也可以攻击用户和其他 NPC,而用户可以攻击 NPC,所以我将不得不编写很多额外的方法和重载(例如void AttackNpc(User attacker, Npc npc)
.
我可以通过使用 Linq2SQL 的继承特性来简化这一切,使用 1 个通用表 Creatures 而不是分别使用用户和 NPC。这也将允许我拥有一种通用方法,void Attack (Creature attacker, Creature target)
而不是多个版本。
另一方面,Linq2SQL 中的继承似乎大大增加了解决方案的整体复杂性。每次我决定对用户或 NPC 进行更改时,我都需要考虑继承问题。此外,通过 Linq2SQL 中的继承,我对用户和 NPC 的单独表没有那么清晰,因为所有内容都被转储到一个表中。最后,我担心这种组合的 Creatures 表的性能。
在这里决定是否应该使用继承变得很困难,因为如果我选择了一种次优的方法,那么将来切换到另一种方法将非常困难。
我想听听专家对此的意见。
谢谢。