0
Könnte jemand bestätigen, ob mein unter Ansatz richtig ist oder eine bessere Alternative:Allgemein Typ Verwendung
// An interface
IAnimal
{
pubilc void Hunt();
}
// An abstract class
Animal<T> : IAnimal
{
public void Hunt()
{
UseWeapon(T);
}
protected abstract T GetWeapon();
protected abstract void UseWeapon(T weapon);
}
Damit ich Implementierungen wie haben könnte:
Tiger : Animal<Claw>
Hyena : Animal<Teeth>
Eagle : Animal<Beak>
Für zB:
Tiger : Animal<Claw>
{
protected override void UseWeapon(Claw claw)
{
// logic here
}
protected override void GetWeapon()
{
// logic here to populate props & return Claw();
}
}
Und dann könnte ich anrufen:
IAnimal animal = GetRandomAnimal(); // OR GetTiger();
animal.Hunt()
Was ist, wenn Sie 'Bear' implementieren müssen, der' Claws' sowie 'Teeth' als Waffe verwendet? –
Dieser Code funktioniert nicht. 'public void Hunt() {UseWeapon (T); } ' –
Ja, ich würde @ DmitryBychenko zustimmen, scheint es die verfügbaren Optionen pro Tier eher zu beschränken – Icepickle