场景假设:吃鸡游戏中的角色在游戏更换武器
interface WeaponBehavior{
public void show();
}
class M16Weapon implements WeaponBehavior{
public void show(){
System.out.println("changed M16");
}
}
class AkWeapon implements WeaponBehavior{
public void show(){
System.out.println("changed Ak");
}
}
上述定义中,接口就是一个行为标准,用于把变化的东西抽出来,具体的实现类被称作“策略”或作具体的“算法”或者具体的“行为”。
class Role{
WeaponBehavior w;
public Role(WeaponBehavior wb){
this.w = wb;
}
public void setWeaponBehavior(WeaponBehavior wb){
this.w = wb;
}
public void changeWeapon(){
w.show();
}
}
将WeaponBehavior组合到Role中,在执行过程中,正是运用多态(WeaponBehavior是一个接口)从而实现了执行过程中,策略的更改。
策略模式用到的原则:
1.将变化的与不可变化的分离开来;
2.尽可能多用组合,少用继承;
3.针对接口编程,不是针对实现编程。