我在写一篇小小的足球经理游戏时遇到了以下问题。 我有班人员,球员,教练,经理。 人是其他人的基类。问题在于玩家也可以成为教练和/或经理。通过增加更多的角色(例如守卫),我会变得越来越复杂 - 那么,你如何有效地实现这一点?那是不是有一个模式?如何在Java中为多个继承对象建模
3
A
回答
1
我想要一个Role接口,其实现类将一个Person包装为数据成员。 (AbstractRole在这里是有意义的。)
更喜欢继承的组合,特别是在这种情况下。
9
不要将角色建模为一种人。该人应该有一个角色集合
public enum Role {
PLAYER,
COACH,
REF
}
public class Player {
private final String name;
private Collection<Role> roles = new ArrayList<Role>();
public Player(String name) {
this.name = name;
}
public void addRole(Role role) {
this.roles.add(role);
}
}
+1
+1 - 另一个更好的主意。 – duffymo 2010-12-21 15:39:47
0
这将只是一个建议。
当我读到你的问题时,我发现你的玩家可能在游戏过程中被“提升”或“降级”。例如,退休的球员可能会成为“教练”。
第二件事(你已经注意到了)是一个人可能既是教练又是经理。
这就是为什么我会创建一个集合角色 -s在人类。
一个角色可能会是一个抽象类,它可能有以下子类:
- 球员
- 教练
- 经理
- 等
0
你可以对此有一个枚举类型
enum Role {
Player, Coach, Manager, GroundsKeeper
}
class Person {
final Set<Role> roles = EnumSet.noneOf(Role.class);
}
这样一个人可以有任意数量的角色。
相关问题
- 1. 如何在面向对象编程中为继承建模
- 2. Java对象类和多继承
- 3. 创建一个继承对象数组
- 4. 如何将继承对象的列表转换为Java中的对象集合?
- 5. 继承Java中的对象类
- 6. 如何让对象继承其原型中的两个对象?
- 7. 继承Django模型中的python对象
- 8. 如何在JavaScript中建立对象之间的继承关系?
- 9. 如何创建从父对象继承的对象?
- 10. 对象创建使用继承在require.js
- 11. 继承和抽象如何与多个类一起工作? [java]
- 12. 如何继承django中的对象?
- 13. java创建一个从不同类继承的对象的ArrayList
- 14. 如何模拟多重继承在C#
- 15. JAVA返回父对象 - 从继承的继承 - 生成器模式
- 16. 如何实现与多个子对象的继承.net
- 17. java和多继承
- 18. 在c中创建一个继承类的对象#
- 19. 在java中创建多个对象oop
- 20. 类,对象,继承?
- 21. 继承ActiveRecord对象
- 22. Javascript对象继承
- 23. Javascript对象继承
- 24. 继承JavaScript对象
- 25. Java LinkedList对象继承覆盖
- 26. java对象和继承数组
- 27. Java对象,继承和接口
- 28. 差异的这些对象(Java继承)
- 29. 如何使用Zend Framework在域中建立多个表继承?
- 30. Hibernate继承建模
是的,继承构成。 – 2010-12-21 15:39:06