设计模式 | 策略模式

2019-08-10  本文已影响0人  icebreakeros

策略模式

定义一组算法,将每个算法都封装起来,使得它们之间可以相互替换。策略模式让算法独立于调用它的客户端而独立变化

包含角色

实例

玩枪战类游戏简单实现,可以根据不同战场情况,切换枪支

策略接口

/**
 * 策略对象
 */
public interface Weapon {

    public void gun();
}

策略实现类

/**
 * 策略实现类
 */
public class AWM implements Weapon {

    @Override
    public void gun() {
        System.out.println("AWM ...");
    }
}

public class S12K implements Weapon {

    @Override
    public void gun() {
        System.out.println("S12K ...");
    }
}

环境类

/**
 * 环境
 */
public class Context {

    private Weapon weapon;

    public Context(Weapon weapon) {
        this.weapon = weapon;
    }

    public Weapon getWeapon() {
        return weapon;
    }

    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }

    public void gun() {
        weapon.gun();
    }
}

测试类

public class Run {

    public static void main(String[] args) {
        Context context = new Context(new AWM());
        context.gun();

        context.setWeapon(new S12K());
        context.gun();
    }
}

// 输出结果
AWM ...
find enemies 30 meters ahead
S12K ...
上一篇 下一篇

猜你喜欢

热点阅读