策略模式
策略模式:定义一组算法,将每个算法都封装起来,使它们可以互相转换。
角色:1.Context封装角色:也叫做上下文角色。屏蔽高层对算法的直接访问。
2.Strategy抽象策略角色:算法家族的抽象。一般为接口。
3.ConcreteStrategy具体策略角色:抽象策略角色的实现。实现具体的算法。
适用场景:多个类只有在算法或行为上稍有不同。算法需要自由切换的场景。
具体实现(strategy):这是使用四则运算来实现。
通用实现
1.创建抽象策略角色
/**
* 抽象的策略角色
* 给出两个数字,进行四则运算
*/
public interface Strategy {
public int exec(int a,int b);
}
2.创建加法具体策略角色
/**
* 加法运算的具体实现
*/
public class Add implements Strategy {
@Override
public int exec(int a, int b) {
return a+b;
}
}
3.创建减法具体策略角色
/**
* 减法运算的具体实现
*/
public class Sub implements Strategy {
@Override
public int exec(int a, int b) {
return a-b;
}
}
4.创建上下文角色
/**
* 上下文角色,也是封装角色
*/
public class Context {
private Strategy strategy = null;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int exec(int a,int b,String sym){
return this.strategy.exec(a,b);
}
}
5.创建场景测试类
/**
* 场景测试类
*/
public class Client {
public static void main(String[] args) {
int a = 1;
int b = 2;
Context context = new Context(new Add());
System.out.println(context.exec(a,b,"+"));
context = new Context(new Sub());
System.out.println(context.exec(a,b,"-"));
}
}