策略模式(Strategy):定义一系列的算法,将每一个算法封装起来,并且使它们可以相互替换。
首先,定义一个接口ISortStrategy
,表示排序算法的策略:
public interface ISortStrategy
{
void Sort(List<int> list);
}
然后,定义几种不同的排序策略类,这些类实现了ISortStrategy
接口:
//也可以将方法写在一个类中
public class BubbleSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
Console.WriteLine("Sorting using Bubble Sort");
// 实现冒泡排序算法
// ...
}
}
public class QuickSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
Console.WriteLine("Sorting using Quick Sort");
// 实现快速排序算法
// ...
}
}
接着,定义一个上下文类Context
,它持有一个排序策略对象:
public class Context
{
private ISortStrategy _sortStrategy;
public ISortStrategy SortStrategy { get { return _sortStrategy; } set { _sortStrategy = value; } }
public Context(ISortStrategy sortStrategy)
{
_sortStrategy = sortStrategy;
}
public void Sort(List<int> list)
{
_sortStrategy.Sort(list);
}
}
最后,创建一个客户端程序来使用这些类:
public class ClientProgram
{
public static void Main(string[] args)
{
Context context = new Context(new QuickSortStrategy()); // 创建Context并设置初始排序策略为QuickSortStrategy
List<int> numbers = new List<int> { 5, 2, 9, 1, 5, 6 }; // 需要排序的数字列表
context.Sort(numbers); // 调用Sort方法来执行排序,该方法会触发排序算法的执行。
}
}