下面是一個使用C#實現策略模式的示例代碼:
using System;// 策略接口
public interface IStrategy
{void Execute();
}// 具體策略類A
public class ConcreteStrategyA : IStrategy
{public void Execute(){Console.WriteLine("具體策略A的執行邏輯");}
}// 具體策略類B
public class ConcreteStrategyB : IStrategy
{public void Execute(){Console.WriteLine("具體策略B的執行邏輯");}
}// 上下文類
public class Context
{private readonly IStrategy strategy;public Context(IStrategy strategy){this.strategy = strategy;}public void ExecuteStrategy(){strategy.Execute();}
}// 示例代碼
class Program
{static void Main(string[] args){// 創建上下文對象,傳入具體策略對象Context context = new Context(new ConcreteStrategyA());// 執行策略context.ExecuteStrategy();// 切換策略context = new Context(new ConcreteStrategyB());context.ExecuteStrategy();Console.ReadKey();}
}
在上述示例中,我們首先定義了一個策略接口IStrategy,它包含了一個Execute方法,用于執行具體的策略邏輯。然后我們創建了兩個具體的策略類ConcreteStrategyA和ConcreteStrategyB,它們分別實現了策略接口中的Execute方法,提供了具體的策略執行邏輯。
接下來,我們創建了一個上下文類Context,它在構造函數中接收一個策略對象,并提供了一個ExecuteStrategy方法來執行策略。在ExecuteStrategy方法中,實際上是調用了傳入的策略對象的Execute方法,從而執行具體的策略邏輯。
在示例代碼中,我們創建了一個Context對象,并傳入一個ConcreteStrategyA對象,然后調用ExecuteStrategy方法執行策略。接下來,我們切換策略,將ConcreteStrategyB對象傳入Context對象,再次調用ExecuteStrategy方法執行新的策略。運行代碼后,你將看到"具體策略A的執行邏輯"和"具體策略B的執行邏輯"這兩個輸出。
通過使用策略模式,我們可以在運行時動態地切換不同的策略,從而實現不同的行為。策略模式提供了一種靈活的設計方式,將算法的實現與使用分離,使得代碼更易于擴展和維護。