策略模式属于行为型模式,可以将算法和调用者独立开。
意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。
何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。
interface Strategy{
int operate(int a,int b);
}
class AddStrategy implements Strategy{
@Override
public int operate(int a,int b) {
return a + b;
}
}
class SubStrategy implements Strategy{
@Override
public int operate(int a,int b) {
return a - b;
}
}
class Context{
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
//设置策略
public void setStrategy(Strategy strategy){
this.strategy = strategy;
}
//执行策略
public int executeStrategy(int a,int b){
return strategy.operate(a, b);
}
}
public class StrategyModel {
public static void main(String[] args) {
Context context = new Context(new AddStrategy());
System.out.println(context.executeStrategy(10, 5));
context.setStrategy(new SubStrategy());
System.out.println(context.executeStrategy(10, 5));
}
}
版权声明:本文为pao___pao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。