策略模式适用于 :
- 一个类拥有几种固定方法,但是这些方法可能会有多种实现。比如:游戏的角色装备,装备属性是可以替换的。
- 一个类有多种算法,但是需要在多种之中动态的选择一种。
核心思想就是把一个类的 必须拥有的属性但是又会有多种形态的,剥离出来,抽象成一个类,然后持有这个类的一个实例,就可以随时动态替换。
public class Person{
Weapon weapon;//武器
int blood=1000;//血量
String name;//名字
public Person(String name){
this.name=name;
}
public void setWeapon(Weapon weapon){
this.weapon=weapon;
}
public void hit(Person person){
person.blood-=weapon.attack;
weapon.animation();
System.out.println(peron.name+"的血量减少了xx点");
}
}
public abstract class Weapon{
int attack;//攻击力
public abstract void animation();//动画效果
}
public Sword extends Weapon{
{
this.attack=56;
}
public void animation(){
System.out.println("剑的武器效果动画");
}
}