目錄
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();
}
}