策略模式是一种行为设计模式,它使您能够定义一系列算法,将它们封装起来,并根据需要在运行时轻松地切换它们。
在策略模式中,算法被封装为单独的类,称为策略。这些策略实现共同的接口或基类,并被传递给另一个类(称为上下文),该类维护对当前策略的引用。上下文可以使用策略执行其任务,同时在需要时切换策略。
下面是使用C#实现策略模式的实例代码:
代码语言:javascript复制
// 定义策略接口
interface IStrategy
{
int Execute(int a, int b);
}
// 实现不同的算法作为策略
class AddStrategy : IStrategy
{
public int Execute(int a, int b)
{
return a b;
}
}
class MultiplyStrategy : IStrategy
{
public int Execute(int a, int b)
{
return a * b;
}
}
// 上下文类维护对当前策略的引用,并使用该策略执行其任务
class Context
{
private IStrategy strategy;
public Context(IStrategy strategy)
{
this.strategy = strategy;
}
public void SetStrategy(IStrategy strategy)
{
this.strategy = strategy;
}
public int ExecuteStrategy(int a, int b)
{
return strategy.Execute(a, b);
}
}
// 示例代码
Context context = new Context(new AddStrategy());
int result = context.ExecuteStrategy(3, 4); // result is 7
context.SetStrategy(new MultiplyStrategy());
result = context.ExecuteStrategy(3, 4); // result is 12
```
【代码分析】
在这个示例中,`IStrategy`是策略接口,`AddStrategy`和`MultiplyStrategy`是具体的策略实现。`Context`类维护对当前策略的引用,并在执行任务时使用该策略。使用`SetStrategy`方法可以轻松切换策略。最后,我们创建一个`Context`实例,并使用不同的策略执行任务,得到不同的结果。