您可以使用策略模式Zombie使您的课程如下所示:
class Zombie {
private AttackAction atackAction;
private MoveAction moveAction;
//other attributes of the zombie;
}
您的AttackAction和MoveAction界面如下所示:
interface AttackAction {
public void attack();
}
interface MoveAction {
public void move();
}
每个接口可以有两个实现。就像在的情况下AttackAction,一个是RealAttackAction,另一个是DummyAttackAction。
class RealAttackAction implements AttackAction {
public void action(){
//do some real action
}
}
class DummyAttackAction implements AttackAction {
public void action(){
//do some dummy action
}
}
然后如果僵尸可以攻击,传递RealAttackAction' 引用它,如果它不能攻击,传递DummyAttackAction' 引用。类似的事情可以用MoveAction接口来完成。
您可以为僵尸维护一个list(或者map,如果每个僵尸都有唯一的标识)来有效地处理它们!