设计模式之策略模式

2018-09-22  本文已影响0人  正在加载更多
定义

策略模式(Strategy:它定义了算法家族,分别封装起来,让它们之间可以相互退换,此模式让算法的变化,不会影响到使用算法的客户

UML类图
策略模式UML类图
代码
public interface Strategy {
     long getResult();
}
public class AddStrategy implements Strategy {
    
    private long numberA;
    private long numberB;
    
    public AddStrategy(long numberA, long numberB) {
        this.numberA = numberA;
        this.numberB = numberB;
    }

    @Override
    public long getResult() {
        return numberA + numberB;
    }


    public long getNumberA() {
        return numberA;
    }

    public void setNumberA(long numberA) {
        this.numberA = numberA;
    }

    public long getNumberB() {
        return numberB;
    }

    public void setNumberB(long numberB) {
        this.numberB = numberB;
    }
}

public class SubStrategy implements Strategy {
    
    private long numberA;
    private long numberB;

    public SubStrategy(long numberA, long numberB) {
        this.numberA = numberA;
        this.numberB = numberB;
    }

    @Override
    public long getResult() {
        return numberA - numberB;
    }

    public long getNumberA() {
        return numberA;
    }

    public void setNumberA(long numberA) {
        this.numberA = numberA;
    }

    public long getNumberB() {
        return numberB;
    }

    public void setNumberB(long numberB) {
        this.numberB = numberB;
    }
}

public class Context {

    private Strategy strategy;

    public Context(Strategy strategy){
        this.strategy = strategy;
    }
    public long getResult(){
        return strategy.getResult();
    }
}
public class ClientTest {

    public static void main(String[] args) {

        Strategy addStrategy = new AddStrategy(1L,2L);

        Context context = new Context(addStrategy);

        long result = context.getResult();

        System.out.println(result);
    }

}
策略模式解析

策略模式就是用来封装变化的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。

策略模式与工厂方法模式的区别
上一篇 下一篇

猜你喜欢

热点阅读