我有一个班级Enemy
,我想有多种类型的敌人。每个Enemy
都会有不同的移动行为,例如一个可能会直接向玩家移动,一个可能会保持一定的距离等。我想知道的是,拥有多种不同行为的最简单方法是什么,最好是在一个类中?
我目前的想法是使用 a switch
,并将所有行为包含在一个方法中
public class Enemy
{
public int health;
public int damage;
// etc etc
public void Move(string type)
{
switch(type)
{
case "charge":
chargeMove();
break;
case "maintain":
maintainMove();
break;
}
}
private void chargeMove()
{
//stuff
}
private void maintainMove()
{
//stuff
}
//all the behaviors
}
我想知道的是,将所有内容保留在这样的一个函数中,还是为每个继承自的敌人类型创建一个新类更好Enemy
?我更愿意将它保留在一个类中,以便所有敌人都可以很好地存储到 aIList
中,而无需我进行任何强制转换来使用任何特定功能。
任何意见,将不胜感激。
编辑:感谢所有回复,我想我会使用 Alastair 提出的接口方法。