要使用的设计模式

max*_*mus 3 oop inheritance class-hierarchy

我想用以下类创建程序:Class Player,它存储有关get/set函数的玩家的一些信息.播放器可以作为AttackPlayer,它将拥有带有get/set功能的数据.Player也可以作为ProtectorPlayer,还有一些其他自己的数据,get/set函数与AttackPlayer不同.

Player也可以是TeamPlayerFreePlayer,这些类中的每一个都有自己的数据等.

问题是如何正确实现层次结构?

起初我想过多重继承,无论如何都不好.类似于:Player AttackPlayer扩展Player ProtectorPlayer扩展Player

TeamPlayer扩展AttackPlayer或ProtectorPlayer FreePlayer扩展AttackPlayer或ProtectorPlayer

我也考虑过战略模式,但这里不适用,因为没有常见的算法.

有没有什么方法可以帮助组织这种互动?

另一种方法是在Player类中有一个字段,这有助于识别TeamPlayer/FreePlayer是Attack还是Protector类型,并根据它来访问适当的字段.在这种情况下,继承将是这样的:

播放器TeamPlayer扩展播放器FreePlayer扩展播放器

攻击,保护没有继承的结构或类,但作为Player类中的字段.

但我不喜欢这种方法,我正在寻找更好的设计.

Udo*_*ein 6

恕我直言继承是错误的模型.相反,我会有一个球员类和不同的角色.这取决于玩家是否可以同时拥有多个角色.我会使用策略模式.