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