策略模式:定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得算法可獨立於使用它的客戶而變化。
1.許多相關的類僅僅是行爲有異。“策略”提供了一種用多個行爲中的一個行爲來配置一個類的方法。
2.需要使用一個算法的不同變體。
3.算法使用客戶不應該知道的數據。可使用策略模式以避免暴露覆雜的、與算法相關的數據結構。
4.一個類定義了多種行爲,並且這些行爲在這個類的操作中以多個條件語句的形式出現。
將相關的條件分支移入它們各自的Strategy類中以代替這些條件語句。
接口(或抽象類):
public abstract class Strategy {
public abstract void method();
}
public class StrategyImplA extends Strategy {
public void method() {
System.out.println("這是第一個實現");
}
}
public class StrategyImplB extends Strategy {
public void method() {
System.out.println("這是第二個實現");
}
}
public class Context {
Strategy stra;
public Context(Strategy stra) {
this.stra = stra;
}
public void doMethod() {
stra.method();
}
}