以下是一个简单的策略模式的C#实现示例。我们定义了一个IStrategy
接口,以及实现了这个接口的两个类ConcreteStrategyA
和ConcreteStrategyB
。Context
类使用了策略模式来根据需要动态地改变算法或行为。
cs
// 策略接口
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)
{
// 使用策略A
Context contextA = new Context(new ConcreteStrategyA());
contextA.ExecuteStrategy();
// 使用策略B
Context contextB = new Context(new ConcreteStrategyB());
contextB.ExecuteStrategy();
Console.Read();
}
}
在这个例子中,Context
类是一个包装器,它接受一个实现了IStrategy
接口的对象,并将所有工作委托给这个对象。客户端代码可以根据需要选择不同的策略对象来创建Context
类的实例。这样,算法或行为可以在运行时动态地更改,而不改变Context
类的接口。