策略模式

扫码查看

一、策略模式的概念

策略设计模式:定义一组可以互相替换的算法或行为,在运行时动态的替换。

特点:比继承更加优雅的一种代码复用的方式。

二、UML图

定义了一个国王,国王可以随时通过setWeapon()方法更换武器ABC,将fight()方法的实现委托给w.useWeapon()。

三、代码

Character.java

public abstract class Character {
    public WeaponBehavior weapon;
    abstract void fight();
    void setWeapon(WeaponBehavior w) {
        weapon = w;
    }
}

King.java

public class King extends Character{
    King(WeaponBehavior w) {
        weapon = w;
    }
    public void fight() {
        System.out.print("The king use ");
        weapon.useWeapon();
    }
}

WeaponBehavior.java

public interface WeaponBehavior {
    void useWeapon();
}

SwordBehavior.java

public class SwordBehavior implements WeaponBehavior{
    public void useWeapon() {
        System.out.println("大宝剑");
    }
}

KnifeBehavior.java

public class KnifeBehavior implements WeaponBehavior{
    public void useWeapon() {
        System.out.println("七星刀");
    }
}
01-03 13:40
查看更多