我需要有关接口的建议。我有一个名为 Unit 的类,它可以攻击其他单位。攻击可以是空中或地面。我需要单一的方法来实现攻击调用attack()
。一些单位只能攻击地面单位,一些空中单位或两者兼而有之。
这是我到目前为止提出的:
public interface Attack() {
public void attack(SCObject object);
}
public interface GroundAttack() extends Attack {
public void groundAttack(SCObject object);
}
public interface AirAttack() extends Attack {
public void airAttack(SCObject object);
}
我可以有不同的单位:
Unit extends SCObject implements GroundAttack {
}
Unit extends SCObject implements AirAttack {
}
Unit extends SCObject implements AirAttack, GroundAttack {
}
问题是这个实现将显示两个地面和空中选项,而我只希望attack()
方法可见。你能提出解决方案吗?或者这对你来说还可以吗?