interface ILife {
void Equip(IWeapon weapon);
}
interface IWeapon {
void OnEquip(ILife life);
}
class People : ILife {
int nowPower;
public void Equip(IWeapon weapon) {
//do something.....
weapon.OnEquip(this);
//so how to do like nowPower+=weapon.addPower?
}
}
class Weapon : IWeapon {
ILife user;
int addPower=200;
public void OnEquip(ILife life) {
user = life;
//do something...
}
}
这是我在游戏中的代码,ILife中需要处理很多类似Weapon中的addPower的字段,所以我如何在不添加IWeapon接口中添加字段以保持代码整洁的前提下做到这一点?
这是设计问题。 Weapon
具有字段addPower
,但没有IWeapon
。这意味着并非所有武器(并非所有实现IWeapon
的类)都为角色增加了力量。因此,如果接口未定义此属性,则不能使用此属性。 (将接口投射到实现类上首先要考虑使用接口的全部要点)
如果all武器可以增加力量,那么界面IWeapon
需要反映武器的这一要求:
interface IWeapon {
void OnEquip(ILife life);
int AddPower { get; }
}
然后所有武器都需要实现此属性:
class Weapon : IWeapon {
int addPower=200;
public int AddPower
{
get {
return this.addPower;
}
}
}
[如果武器确实不增加任何力量(例如防御装备),则它最好在AddPower
中返回0,没有区别。