java strategy模式,Java Strategy 模式简介
GOF《設(shè)計模式》一書對Strategy模式是這樣描述的:定義一系列的算法,把他們一個個封裝起來,并且使它們可相互替換。Strategy模式使算法可獨立于使用它的客戶而變化。別名:政策(Policy)。
Strategy模式主要用來平滑地處理算法的切換,它以下列幾條原則為基礎(chǔ):
1) 每個對象都是一個具有職責的個體。
2) 這些職責不同的具體實現(xiàn)是通過多態(tài)的使用來完成的。
3) 概念上相同的算法具有多個不同的實現(xiàn),需要進行管理。
Strategy模式的應用場景一般是:
- 具有多種可能需要實現(xiàn)的算法
- 需要在程序中對算法進行動態(tài)切換
結(jié)構(gòu)如下圖所示:
策略模式實現(xiàn)起來其實很簡單,以下是一個關(guān)于選擇排序算法的簡單的例子:
public interface Strategy {
public void orderAlgorithmic();
}
public class ConcreteStrategyA implements Strategy{
@Override
public void orderAlgorithmic() {
System.out.println("調(diào)用快速排序法");
}
}
public class ConcreteStrategyB implements Strategy{
@Override
public void orderAlgorithmic() {
System.out.println("調(diào)用插入排序法");
}
}
public class ConcreteStrategyC implements Strategy{
@Override
public void orderAlgorithmic() {
System.out.println("調(diào)用歸并排序法");
}
}
public class Context {
void DoAction(Strategy str) {
str.orderAlgorithmic();
}
}
public class Client {
public static void main(String[] args) {
new Context().DoAction(new ConcreteStrategyA());
new Context().DoAction(new ConcreteStrategyB());
new Context().DoAction(new ConcreteStrategyC());
}
}
輸出:
調(diào)用快速排序法
調(diào)用插入排序法
調(diào)用歸并排序法
總結(jié)
以上是生活随笔為你收集整理的java strategy模式,Java Strategy 模式简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php项目打开快捷方式,PHP_克隆一个
- 下一篇: php常用的数组函数及功能,PHP 常用