C# 策略模式(Strategy)

策略模式(Strategy):定义一系列的算法,将每一个算法封装起来,并且使它们可以相互替换。

首先,定义一个接口ISortStrategy,表示排序算法的策略:


public interface ISortStrategy  
{  
    void Sort(List list);  
}

然后,定义几种不同的排序策略类,这些类实现了ISortStrategy接口:

//也可以将方法写在一个类中
public class BubbleSortStrategy : ISortStrategy  
{  
    public void Sort(List list)  
{  
        Console.WriteLine("Sorting using Bubble Sort");  
        // 实现冒泡排序算法  
        // ...  
    }  
}  
  
public class QuickSortStrategy : ISortStrategy  
{  
    public void Sort(List 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 list)   
    {   
        _sortStrategy.Sort(list);   
    }   
}

最后,创建一个客户端程序来使用这些类:

public class ClientProgram  
{  
    public static void Main(string[] args)  
    {  
        Context context = new Context(new QuickSortStrategy()); // 创建Context并设置初始排序策略为QuickSortStrategy  
        List numbers = new List { 5, 2, 9, 1, 5, 6 }; // 需要排序的数字列表  
        context.Sort(numbers); // 调用Sort方法来执行排序,该方法会触发排序算法的执行。  
    }  
}

你可能感兴趣的:(策略模式,c#,开发语言,设计模式)