攻撃の種類(複数)によって処理を変えたいのですが、IF分を使わず書くにはどのようにしたらいいでしょうか?

AttackControl attackControl = new AttackControl;
attackControl.setAttack(Attack attack); // 攻撃を設定する
class AttackControl {
public void setAttack(Attack attack) {
if (attack isInstance of Tati) {
System.out.println("太刀での攻撃です");
} else if (attack isInstance of Yumi) {
System.out.println("弓での攻撃です");
} ..... else {
System.out.println("それ以外の攻撃です");
}
}
}

Attackクラスに
public enum AttackType {
Tachi {@Override
protected void setAttack(Attack attack) {attack.setAttack_Tachi();}
},
Yumi {@Override
protected void setAttack(Attack attack) {attack.setAttack_Yumi();}
};
protected abstract void setAttack(Attack attack);
};
を記載してAttackTypeによって振り分けをしたほうがいいでしょうか?