首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(OOP/Java)我应该如何处理这种子类-超类关系?

(OOP/Java)我应该如何处理这种子类-超类关系?
EN

Stack Overflow用户
提问于 2013-09-21 03:32:59
回答 5查看 141关注 0票数 1

我正试着把棋盘游戏变成一个港口。棋盘游戏中的每个玩家从八个不同的角色中选择一个。每个角色都有特殊的能力和一些风格的文字,但除此之外,它们或多或少是相同的。

目前我有一个BaseHero类。我为8个不同的字符创建了一个类,并让它们扩展BaseHero。但是,同一个角色永远不会有多个实例。这是实现这一点的最佳方式吗?

我的另一个想法是创建一个CharacterList类,其中包含所有特殊能力和布尔测试的代码,以确定它们是否存在于游戏中,但我觉得这太笨拙了,而且明显没有模块化。

EN

回答 5

Stack Overflow用户

发布于 2013-09-21 03:39:22

实例的数量与类是否应该存在的事实无关。一个类只实例化一次是完全正常的。您的BaseHero设计听起来很合理。

票数 1
EN

Stack Overflow用户

发布于 2013-09-21 03:40:32

我会让BaseHero变得抽象,这样你就不能在不将其子类化为不同字符的情况下实例化它,同时仍然可以获得一些很好的继承好处。您还可以强制使用单例模式,以便一次只能创建其中的一个,不过也可以像您所说的那样,简单地设置一个标记,以确定该字符是否被占用。

CharacterList应该是其他的东西。如果需要字符列表,只需创建一个List<BaseHero>即可。对我来说,将所有其他逻辑放在一个List类中是没有意义的。

此外,在制作角色时,尽量遵循组合而不是继承。例如,角色有一个异能,而不是角色ISA characterWithAbility。

票数 1
EN

Stack Overflow用户

发布于 2013-09-21 04:06:37

我认为应该使用两个抽象方法specialAbilitysomeFlavorText.来使BaseHero成为抽象类您可以根据需要在角色自己的类中根据需要定义两种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18924505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档