我有一个设计问题。我试着写一个角色扮演游戏,让巫师互相战斗。他们通过施法互相对抗。我决定为所有法术创建一个抽象超类。
基本上,一个咒语是一个有名字的对象(例如火球),知道它的巫师(通过巫师值确定咒语的强度)并且必须施放咒语,所以它应该有一个抽象方法“cast ”。
public abstract class Spell {
private String name;
private Sorcerer sorcerer;
public abstract void cast();
}
但是现在我有一个问题:我无法规范这个方法的方法签名,因为不同的咒语需要不同的参数并且可能有不同的返回值。治疗施法可以治疗巫师并且可能不需要参数。但是例如火球法术需要一个敌人作为参数。我将不得不为法术定义不同的基类。这可能会导致爆炸式的类层次结构。
有没有办法定义某种“海绵方法”来重载?或者有更好的方法来解决这个问题吗?
波斯汪
哈士奇WWW
相关分类