策略模式是一种行为设计模式,它允许在运行时根据需要选择算法。这种模式定义了一系列算法,并使得这些算法在使用的时候可以相互替换。客户端可以根据不同的情况选择合适的策略来处理问题,而不需要修改具体使用策略的代码。
以下是一个简单的策略模式示例代码:
using System; // 策略接口 interface IStrategy { void Execute(); } // 具体策略类A class ConcreteStrategyA : IStrategy { public void Execute() { Console.WriteLine("Executing strategy A"); } } // 具体策略类B class ConcreteStrategyB : IStrategy { public void Execute() { Console.WriteLine("Executing strategy B"); } } // 环境类 class Context { private IStrategy strategy; public Context(IStrategy strategy) { this.strategy = strategy; } public void SetStrategy(IStrategy strategy) { this.strategy = strategy; } public void ExecuteStrategy() { strategy.Execute(); } } class Program { static void Main() { // 创建具体策略实例 IStrategy strategyA = new ConcreteStrategyA(); IStrategy strategyB = new ConcreteStrategyB(); // 创建上下文对象,并设置具体策略A Context context = new Context(strategyA); context.ExecuteStrategy(); // 切换具体策略为B,并执行 context.SetStrategy(strategyB); context.ExecuteStrategy(); } }
在上面的代码中,我们定义了一个策略接口 IStrategy
,和两个具体策略类 ConcreteStrategyA
和 ConcreteStrategyB
,它们分别实现了策略接口的 Execute()
方法。然后定义了一个环境类 Context
,它持有一个策略对象,并提供动态切换策略的方法 SetStrategy()
,以及执行策略的方法 ExecuteStrategy()
。
在 Main()
方法中,我们首先创建具体策略实例A和B,然后创建一个环境对象并设置具体策略A,调用 ExecuteStrategy()
方法执行策略A。接着切换策略为B,并再次执行策略,从而演示了在运行时根据情况切换不同的策略。
策略模式可帮助程序更灵活地应对不同的需求,提高代码的可维护性和扩展性,同时避免了硬编码不同的算法逻辑。
标签:Execute,IStrategy,策略,void,模式,strategy,ExecuteStrategy From: https://www.cnblogs.com/wuqihe/p/18404587