什么是策略模式?策略模式屬于物件的行為模式,其用意是針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換,策略模式使得演算法可以在不影響到客戶端的情況下發生變化,舉個例子?

常規代碼實作方式
// 第一種 switch("出行方式") { case "高鐵": { "坐高鐵咯!"; break; } case "飛機": { "坐飛機咯!"; break; } case "火車": { "坐火車咯!"; break; } case "汽車": { "坐汽車咯!"; break; } default: { "巴拉巴拉巴拉"; break; } } // 第二種 if("出行方式" == "高鐵") { "坐高鐵咯!"; } if("出行方式" == "飛機") { "坐飛機咯!"; } if("出行方式" == "火車") { "坐火車咯!"; } if("出行方式" == "汽車") { "坐汽車咯!"; }
運用策略模式實作
1)寫個介面
interface TravelOutside { void modeOfTravel(); }
2)介面實作
// 高鐵 public class HighSpeedRailway implements TravelOutside { @Override public void modeOfTravel() { System.err.println("高鐵"); } } // 飛機 public class Aircraft implements TravelOutside { @Override public void modeOfTravel() { System.err.println("飛機"); } } // 火車 public class Train implements TravelOutside { @Override public void modeOfTravel() { System.err.println("火車"); } } // 汽車 public class Automobile implements TravelOutside { @Override public void modeOfTravel() { System.err.println("汽車"); } }
3)抽象類實作
public class Travel { // 出行方式介面 TravelOutside travelOutside; // 設定出行方式 public void setTravelOutside(TravelOutside travelOutside) { this.travelOutside = travelOutside; } // 選擇出行方式 public void travelStyle() { travelOutside.modeOfTravel(); } }
4)使用
public static void main(String[] args) { Travel travel = new Travel(); travel.setTravelOutside(new Aircraft()); travel.travelStyle(); }
控制臺輸出結果

聊聊
策略模式設計三個角色:
環境角色(Context):定義環境角色,負責和具體的策略類互動,內部持有一個策略類的參考,給客戶端呼叫;
抽象策略角色(Strategy):定義抽象策略角色,通常情況下使用介面或者抽象類去實作;
具體策略(ConcreteStrategy)角色:定義具體策略角色(在定義飛機、高鐵、火車、汽車具體的策略),
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/264737.html
標籤:其他
上一篇:Dapr概覽(中文翻譯)
下一篇:EF框架學習之旅
