計算機網路技術組網實習報告(四)——IIS的安裝及WEB伺服器的配置
阿新 • • 發佈:2020-10-10
策略模式
一、簡介
策略模式是定義一系列的演算法,把每一個演算法封裝起來, 並且使它們可相互替換。策略模式模式使得演算法可獨立於使用它的客戶而獨立變化。
二、使用場景
- 需要安全的封裝多種同一型別操作時
- 針對同一型別問題的多種處理方式,僅僅是具體行為有差別時。
- 一個抽象類有多個子類,而又需要條件語句來選擇具體子類時。
三、策略模式簡單實現
這裡舉一個排序的例子來說明策略模式,我們知道對一個List進行排序有很多方式比如冒泡、插入、快排等等。我們可以根據需求來選擇不同的排序方式進行排序。所以我們可以定義一個排序策略類
//排序策略類 public interface SortStragety{ void sort(); } //具體排序 public class BubbleSort implements SortStragety{ @Override public void sort() { Log.i(TAG, "sort: Bubble Sort"); } } public class InsertSort implements SortStragety{ @Override public void sort() { Log.i(TAG, "sort: Insert Sort"); } } //操作策略類的Context類 public class SortContext{ private SortStragety sortStragety; public void setSortStragety(SortStragety sortStragety) { this.sortStragety = sortStragety; } public void sort(){ this.sortStragety.sort(); } } //呼叫 SortContext sortContext= new SortContext(); sortContext.setSortStragety(new BubbleSort()); sortContext.sort();
四、小結
在某些情況下我們可能根據不同的情況和場景來選擇不同的解決方式,此時我們一般使用if/else等條件語句來處理,這樣做固然簡單但是當場景增加或者某種場景的處理需要修改時我們需要手動修改程式碼最終會使得程式碼結構臃腫、複雜從而難以維護。如果此時採用策略模式根據不同場景採用不同的策略,這樣即便是增加新的場景我們只需要建立新的策略即可。