2.6 策略设计模式
策略设计模式的意图就是将可互换的方法封装在各自独立的类中,并且让每个方法都实现一个公共的操作
策略模式用于封装系列的算法,这些算法通常被封装在一个被称为Context的类中,客户端程序可以自由选择其中一种算法,或让Context为客户端选择一种最佳算法——使用策略模式的优势是为了支持算法的自由切换。
public interface IStrategy{
public abstract void operate();
}
public class OneStrategy implements IStrategy{
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("我是第一条策略");
}
}
public class TwoStrategy implements IStrategy{
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("我是第二条策略");
}
}
//放置策略的地方相当于将两个妙计(策略)放到了锦囊中
public class Context{
private IStrategy iStrategy;
public Context(IStrategy iStrategy) {
// TODO Auto-generated constructor stub
this.iStrategy = iStrategy;
}
public void action(){
this.iStrategy.operate();
}
}
public class StrategyTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context;
IStrategy isStrategy = new OneStrategy();
context = new Context(isStrategy);
context.action();
isStrategy = new TwoStrategy();
context = new Context(isStrategy);
context.action();
}
}
输出结果
我是第一条策略
我是第二条策略