策略模式

来源:互联网 发布:应聘淘宝客服被骗 编辑:程序博客网 时间:2024/06/07 19:58

策略模式(行为模式)

他对一系列算法进行封装,为所有算法定义一个抽象的算法接口,并通过继承抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定。Strategy模式主要用来平滑地处理算法的切换

比如商场进行打折活动,有8折的,有满100送90的,这要那个就可以使用策略模式来管理这些算法
这里写图片描述
Strategy.java

public interface Strategy {    void cost(double money);}

StrategyA.java

public class StrategyA implements Strategy {    @Override    public void cost(double money) {        System.err.println("大八折,原价:" + money + ", 打折后:" + money * 0.8);    }}

StrategyB.java

public class StrategyB implements Strategy {    @Override    public void cost(double money) {        System.err.print("满一百减九十,原价:" + money );        if (money >= 100)            money-=90;        System.out.println(", 打折后:" + money);    }}

Context.java

public class Context {    private Strategy strategy;    public Context(Strategy strategy) {        super();        this.strategy = strategy;    }    public void cost(double money) {        strategy.cost(money);    }}

Test测试

public class Test {    public static void main(String[] args) {         Context contextA = new Context(new StrategyA());         contextA.cost(100);         Context contextB = new Context(new StrategyB());         contextB.cost(100);    }}

结果

大八折,原价:100.0, 打折后:80.0满一百减九十,原价:100.0, 打折后:10.0