策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换。
interface Strategy{
void doStrategy();
}
public class StrategyA implements Strategy{
public void doStrategy(){
//算法A
}
}
public class StrategyB implements Strategy{
public void doStrategy(){
//算法B
}
}
public class Algorithm{
private Strategy strategy;
public Algorithm(Strategy strategy){
this.strategy = strategy;
}
public void doAlgorithm(){
strategy.doStrategy();
}
}
客户端
public static void main(String[] args){
Algorithm a = new Algorithm(new StrategyA);
a.doAlgorithm(); //调用算法A
Algorithm a = new Algorithm(new StrategyB);
a.doAlgorithm(); //调用算法B
}
将具体的算法A和B与客户端进行了隔离。