我正在设计一个基于Linq2SQL引擎的游戏。
其他对象中的游戏包含用户和NPC(非游戏角色)。
用户和NPC的功能有所不同,但它们也有一些共同的属性,如健康状况或损坏。
活动通过void AttackUser(User attacker, User target)
等方法完成。
这里的问题是NPC也可以攻击用户和其他NPC,并且用户可以攻击NPC,因此我将不得不编写一些额外的方法和重载(例如void AttackNpc(User attacker, Npc npc)
。
我可以通过使用Linq2SQL的继承功能来简化所有这一切,使用1个通用表Creatures而不是Users和NPC。这也将允许我有一个通用方法,void Attack (Creature attacker, Creature target)
而不是多个版本。
另一方面,Linq2SQL中的继承似乎大大增加了解决方案的整体复杂性。每次我决定对用户或NPC进行更改时,我都需要考虑继承问题。另外,对于Linq2SQL中的继承,我没有用户和NPC的单独表的清晰度,因为所有内容都被转储到一个表中。最后,我关注这种组合的Creatures表的性能。
很难确定我是否应该在这里使用继承,因为如果我选择一种次优的方法,将来很难转换到另一种方法。
我想听听专家的意见。
感谢。
答案 0 :(得分:0)
每次我决定对用户或NPC进行更改时,我都需要 考虑继承问题。
是的,但如果他们在commmon中有很多也很有用,因为你不需要做两次更改。所以,如果你没有使用继承,你需要考虑重复问题。
另外,对于Linq2SQL中的继承,我没有那种清晰度 用户和NPC的单独表格,因为所有内容都被转储 在一张桌子里。
嗯,你正在使用Linq2SQL从你的数据库设计中抽象出来,所以“谁在意”最终。假设你有一个“类型”字段,你仍然可以创建一个用户和NPC view
,如果你真的需要它。
最后,我关注这种组合的表现 生物表。
假设您正在使用sql server,只要您注意正确的索引,就会在遇到麻烦之前需要很多生物。
简而言之,我会继承