策略模式:更改不同的策略
public class App {
public static void main(String[] args) {
DragonSlayer dragonSlayer=new DragonSlayer(new MeleeStrategy());
dragonSlayer.goToBattle();
System.out.println("红龙出现");
dragonSlayer.changeStrategy(new ProjectileStratety());
dragonSlayer.goToBattle();
System.out.println("黑龙出现在你身边");
dragonSlayer.changeStrategy(new SpellStrategy());
dragonSlayer.goToBattle();
}
}
public class DragonSlayer {
private DragonSlayingStrategy strategy;
public DragonSlayer(DragonSlayingStrategy strategy){
this.strategy=strategy;
}
public void changeStrategy(DragonSlayingStrategy strategy){
this.strategy=strategy;
}
public void goToBattle(){
strategy.execute();
}
}
public interface DragonSlayingStrategy {
void execute();
}
public class MeleeStrategy implements DragonSlayingStrategy{
@Override
public void execute() {
System.out.println("拿着宝剑去屠龙");
}
}
public class ProjectileStratety implements DragonSlayingStrategy{
@Override
public void execute() {
System.out.println("你杀死了巨龙");
}
}
public class SpellStrategy implements DragonSlayingStrategy{
@Override
public void execute() {
System.out.println("使用了魔法使龙蒸发");
}
}
结果如下:
拿着宝剑去屠龙
红龙出现
你杀死了巨龙
黑龙出现在你身边
使用了魔法使龙蒸发