东莞网站制作找哪里,网站打开空白 重启iis就好了,做网站和做app哪个难,wordpress会员模板在 C# 中#xff0c;策略模式是一种行为型设计模式#xff0c;它定义了一系列算法#xff0c;并将每个算法封装到具有公共接口的独立类中#xff0c;使得它们可以互相替换。这样可以使得算法的选择独立于算法的使用者#xff0c;从而提高了灵活性和可维护性。
以下是策略…在 C# 中策略模式是一种行为型设计模式它定义了一系列算法并将每个算法封装到具有公共接口的独立类中使得它们可以互相替换。这样可以使得算法的选择独立于算法的使用者从而提高了灵活性和可维护性。
以下是策略模式的关键要点 策略接口定义算法家族的抽象通常是一个接口或者抽象类。 具体策略类实现策略接口封装了具体的算法实现。 环境类Context持有一个策略接口的引用并在运行时可以切换不同的具体策略类。
示例
// 策略接口
public interface ISortingStrategy
{void Sort(int[] data);
}// 具体策略类
public class BubbleSortStrategy : ISortingStrategy
{public void Sort(int[] data){Console.WriteLine(Sorting using Bubble Sort);// 实现具体的冒泡排序算法}
}public class QuickSortStrategy : ISortingStrategy
{public void Sort(int[] data){Console.WriteLine(Sorting using Quick Sort);// 实现具体的快速排序算法}
}// 环境类
public class Sorter
{private ISortingStrategy _sortingStrategy;public Sorter(ISortingStrategy sortingStrategy){_sortingStrategy sortingStrategy;}public void SetSortingStrategy(ISortingStrategy sortingStrategy){_sortingStrategy sortingStrategy;}public void SortData(int[] data){_sortingStrategy.Sort(data);}
}class Program
{static void Main(string[] args){int[] data { 5, 2, 8, 1, 7, 3 };Sorter sorter new Sorter(new BubbleSortStrategy());sorter.SortData(data); // 使用冒泡排序sorter.SetSortingStrategy(new QuickSortStrategy());sorter.SortData(data); // 使用快速排序}
}在上面的示例中ISortingStrategy 是一个策略接口定义了排序算法的抽象方法。BubbleSortStrategy 和 QuickSortStrategy 类分别实现了这个接口分别代表了冒泡排序和快速排序的具体算法实现。Sorter 类是环境类它持有一个 ISortingStrategy 的引用可以动态地切换不同的排序策略在运行时选择不同的具体策略类来实现排序。通过策略模式可以将算法的选择与算法的实现分离使得系统更加灵活和可扩展。