目录
1.简介
将每个算法都封装起来,并使他们之间可以互换。主要采用的使面向对象的继承和多态机制。
2.优点
由于都实现的是同一个接口,从而算法之间可以自由切换。具有良好的扩展性。
3.缺点
每一个策略都是一个类,复用的可能性很小,类数量增多。并且需要对外暴露所有的策略类,这违背了LKP。可通过工厂,代理等修正。
4.形式
抽象策略
public interface IStrategy {
public void method();
}
具体策略1
public class Strategy1 implements IStrategy {
public void method() {
System.out.println("策略1");
}
}
具体策略2
public class Strategy2 implements IStrategy {
public void method() {
System.out.println("策略2");
}
}
封装策略
public class Context {
private IStrategy strategy = null;
public Context(IStrategy _strategy) {
this.strategy = _strategy;
}
public void cMethod() {
this.strategy.method();
}
}
测试类
public class Test {
public static void main(String[] args) {
IStrategy strategy = new Strategy1();
Context context = new Context(strategy);
context.cMethod();
}
}