I asked a question关于如何构造接口,因为对象可以以多种方式使用。给出的答案很好,但它并没有真正解决我的主要问题。我决定尝试自己,然后回来一个更清晰的例子/问题。
以此字符界面为例:
public interface Character {
void attack(Weapon toAttackwith, Character enemy);
void reload(Reloadable reload, Replenishitem replenish);
}
public interface Weapon {
void attack();
}
public interface Reloadable {
void replenish();
}
和实施:
public final class ReloadableWeapon implements GameItem, Reloadable, Weapon {
@Override
public void attack() {}
@Override
public void replenish() {}
}
游戏武器可用于攻击敌人,但并非所有武器都可以重新加载。所以在我的角色interface
中创建了一个名为reload的方法,其中包含某些parameters
。重新加载并不一定只是武器,魔药瓶/容器可以重新加载(重新填充,两个不同的单词用于相同的行为)。
在角色interface
中添加重载方法是否被认为是代码味?