c# 泛型的策略模式
时间: 2023-11-29 07:46:01 浏览: 80
C#中的策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。在策略模式中,我们定义了一组算法,将每个算法都封装起来,并使它们可以互换。这使得算法可以独立于使用它们的客户端而变化。泛型策略模式是策略模式的一种变体,它使用泛型来实现更大的灵活性和类型安全性。
以下是C#泛型策略模式的示例代码:
```csharp
// 定义一个泛型策略接口
public interface IStrategy<T>
{
T Execute(T a, T b);
}
// 实现加法策略
public class AddStrategy<T> : IStrategy<T>
{
public T Execute(T a, T b)
{
dynamic da = a;
dynamic db = b;
return da + db;
}
}
// 实现减法策略
public class SubtractStrategy<T> : IStrategy<T>
{
public T Execute(T a, T b)
{
dynamic da = a;
dynamic db = b; return da - db;
}
}
// 定义一个泛型策略客户端
public class StrategyClient<T>
{
private IStrategy<T> _strategy;
public StrategyClient(IStrategy<T> strategy)
{
_strategy = strategy;
}
public T ExecuteStrategy(T a, T b)
{
return _strategy.Execute(a, b);
}
}
// 使用示例
var addStrategy = new AddStrategy<int>();
var subtractStrategy = new SubtractStrategy<int>();
var client1 = new StrategyClient<int>(addStrategy);
var client2 = new StrategyClient<int>(subtractStrategy);
Console.WriteLine(client1.ExecuteStrategy(10, 5)); // 输出:15
Console.WriteLine(client2.ExecuteStrategy(10, 5)); // 输出:5
```
阅读全文