C# 策略模式,示例代码
时间: 2024-05-27 12:06:40 浏览: 70
C# 策略模式是一种行为设计模式,它允许在运行时选择算法的不同实现。策略模式包含一个接口,定义了算法的行为,和一些实现这个接口的类,代表了不同的算法。在使用策略模式时,我们可以根据不同的情况动态地选择具体的算法实现。
以下是一个简单的 C# 策略模式示例代码:
首先,我们定义一个接口 `IStrategy`,它包含一个方法 `DoOperation`:
```
public interface IStrategy
{
int DoOperation(int num1, int num2);
}
```
然后,我们定义几个实现了 `IStrategy` 接口的类,代表不同的算法实现。这里我们定义两个算法,一个是加法,一个是乘法:
```
public class AddOperation : IStrategy
{
public int DoOperation(int num1, int num2)
{
return num1 + num2;
}
}
public class MultiplyOperation : IStrategy
{
public int DoOperation(int num1, int num2)
{
return num1 * num2;
}
}
```
接着,我们定义一个上下文类 `Context`,它包含一个当前所选的策略对象,并且有一个方法 `ExecuteStrategy`,用于执行当前策略对象的算法:
```
public class Context
{
private IStrategy _strategy;
public Context(IStrategy strategy)
{
this._strategy = strategy;
}
public int ExecuteStrategy(int num1, int num2)
{
return _strategy.DoOperation(num1, num2);
}
}
```
最后,我们可以在客户端代码中使用这些类。首先创建两个算法对象 `AddOperation` 和 `MultiplyOperation`,然后分别将它们传递给 `Context` 对象。最后,通过调用 `ExecuteStrategy` 方法,我们可以执行当前所选的算法,并输出结果:
```
Context context = new Context(new AddOperation());
int result = context.ExecuteStrategy(10, 5);
Console.WriteLine($"10 + 5 = {result}");
context = new Context(new MultiplyOperation());
result = context.ExecuteStrategy(10, 5);
Console.WriteLine($"10 * 5 = {result}");
```
输出结果为:
```
10 + 5 = 15
10 * 5 = 50
```
阅读全文