以下是一个简单的策略模式的C#实现示例。我们定义了一个IStrategy
接口,以及实现了这个接口的两个类ConcreteStrategyA
和ConcreteStrategyB
。Context
类使用了策略模式来根据需要动态地改变算法或行为。
// 策略接口
interface IStrategy
{void Execute();
}// 策略A的实现
class ConcreteStrategyA : IStrategy
{public void Execute(){Console.WriteLine("策略A执行。");}
}// 策略B的实现
class ConcreteStrategyB : IStrategy
{public void Execute(){Console.WriteLine("策略B执行。");}
}// 环境类
class Context
{private IStrategy _strategy;public Context(IStrategy strategy){this._strategy = strategy;}public void ExecuteStrategy(){_strategy.Execute();}
}// 客户端代码
class Program
{static void Main(string[] args){// 使用策略AContext contextA = new Context(new ConcreteStrategyA());contextA.ExecuteStrategy();// 使用策略BContext contextB = new Context(new ConcreteStrategyB());contextB.ExecuteStrategy();Console.Read();}
}
在这个例子中,Context
类是一个包装器,它接受一个实现了IStrategy
接口的对象,并将所有工作委托给这个对象。客户端代码可以根据需要选择不同的策略对象来创建Context
类的实例。这样,算法或行为可以在运行时动态地更改,而不改变Context
类的接口。