using System;
// 1. Strategy Interface
public interface ISortStrategy
{
void Sort(int[] data);
}
// 2. Concrete Strategies
public class QuickSortStrategy : ISortStrategy
{
public void Sort(int[] data)
{
Array.Sort(data); // Example quicksort implementation
Console.WriteLine("Sorted using QuickSort.");
}
}
public class MergeSortStrategy : ISortStrategy
{
public void Sort(int[] data)
{
Array.Sort(data); // Example mergesort implementation
Console.WriteLine("Sorted using MergeSort.");
}
}
// 3. Context
public class Sorter
{
private ISortStrategy _strategy;
public Sorter(ISortStrategy strategy)
{
_strategy = strategy;
}
public void SetStrategy(ISortStrategy strategy)
{
_strategy = strategy;
}
public void PerformSort(int[] data)
{
_strategy.Sort(data);
}
}
// Client code
class Program
{
static void Main()
{
int[] data = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 };
Sorter sorter = new Sorter(new QuickSortStrategy());
sorter.PerformSort(data);
Console.WriteLine("Sorted data: " + string.Join(", ", data));
sorter.SetStrategy(new MergeSortStrategy());
sorter.PerformSort(data);
Console.WriteLine("Sorted data: " + string.Join(", ", data));
}
}