我有一个班级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 提出的接口方法。