package cn.itcast.行为模式.策略模式;
import org.junit.Test;
/*
策略模式:
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。
策略模式属于对象行为模式。它通过对算法进行封装,把使用的算法的责任和算法实现分割开来,并委派给不同的对象
对这些算法进行管理。
*/
public class StrategyTest01 {
// 定义一个抽象武器接口
interface Weapon{
// 定义一个抽象使用武器的方法
void UseWeapon();
}
// 抽象武器的实现类 1
class AKM implements Weapon{
@Override
public void UseWeapon() {
System.out.println("使用AKM扫射敌人");
}
}
// 抽象武器的实现类 2
class M416 implements Weapon{
@Override
public void UseWeapon() {
System.out.println("使用M146单点敌人");
}
}
// 创建一个 角色
class Character {
// 武器作为我的 一个成员变量
private Weapon weapon;
public Character(){
}
public Character(Weapon weapon){
this.weapon=weapon;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void UseWeaponKill(){
this.weapon.UseWeapon();
}
}
// 测试
@Test
public void test(){
// 创建人物
Character character=new Character(new AKM());
character.UseWeaponKill();// 使用武器
// 切换武器
character.setWeapon(new M416());
character.UseWeaponKill();// 使用武器
}
}