定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。
適合場合:
* 1.以不同的格式保存文件
* 2.以不同的算法壓縮文件
* 3.以不同的算法截取圖形
* 4.以不同的格式輸出數據的圖形,曲線,框圖等
策略接口:
public interface Strategy {
void method();
}
策略接口實現類:
public class StrategyImplA implements Strategy{
public void method() {
System.out.println("這是第一個實現a");
}
}
public class StrategyImplB implements Strategy{
public void method() {
System.out.println("這是第二個實現b");
}
}
public class StrategyImplC implements Strategy{
public void method() {
System.out.println("這是第三個實現c");
}
}
調用類:
public class Context {
Strategy stra;
public Context(Strategy stra) {
this.stra = stra;
}
public void doMethod() {
stra.method();
}
}
測試:
public class Test {
public static void main(String[] args) {
Context ctx = new Context(new StrategyImplA());
ctx.doMethod();
ctx = new Context(new StrategyImplB());
ctx.doMethod();
ctx = new Context(new StrategyImplC());
ctx.doMethod();
}
}