技术栈

2019-02-28——设计模式 策略模式

2019-02-28  本文已影响0人  烟雨乱平生

特点

定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。在策略模式中它将这些解决问题的方法定义成一个算法群,每一个方法都对应着一个具体的算法,这里的一个算法我就称之为一个策略。虽然策略模式定义了算法,但是它并不提供算法的选择,即什么算法对于什么问题最合适这是策略模式所不关心的,所以对于策略的选择还是要客户端来做。客户必须要清楚的知道每个算法之间的区别和在什么时候什么地方使用什么策略是最合适的,这样就增加客户端的负担。

主要角色

实现

public interface Strategy<T> {
    T calculate(T t1,T t2);
}


public class StrategyA implements Strategy<String> {
    @Override
    public String calculate(String t1, String t2) {
        return t1+t2;
    }
}


public class StrategyB implements Strategy<Integer> {
    @Override
    public Integer calculate(Integer t1, Integer t2) {
        return t1+t2;
    }
}


public class Context {
    private Strategy strategy;
    public Context(Strategy strategy){
        this.strategy = strategy;
    }

    public Object getValue(Object t1,Object t2){
        return strategy.calculate(t1,t2);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读