策略模式(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方法来执行排序,该方法会触发排序算法的执行。 }
}