您可以使用策略模式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
,如果每个僵尸都有唯一的标识)来有效地处理它们!