← Каталог
Паттерн "Стратегия" в C# — когда нужен, а когда достаточно делегата — Классическая реализация (GoF)
Фрагмент из «Паттерн "Стратегия" в C# — когда нужен, а когда достаточно делегата»: Классическая реализация (GoF).
public interface ISortStrategy
{
void Sort(List<int> list);
}
public class BubbleSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
// пузырьковая сортировка
}
}
public class QuickSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
// быстрая сортировка
}
}
public class SortContext
{
private ISortStrategy _strategy;
public SortContext(ISortStrategy strategy) => _strategy = strategy;
public void SetStrategy(ISortStrategy strategy) => _strategy = strategy;
public void ExecuteSort(List<int> list) => _strategy.Sort(list);
} public interface ISortStrategy
{
void Sort(List<int> list);
}
public class BubbleSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
// пузырьковая сортировка
}
}
public class QuickSortStrategy : ISortStrategy
{
public void Sort(List<int> list)
{
// быстрая сортировка
}
}
public class SortContext
{
private ISortStrategy _strategy;
public SortContext(ISortStrategy strategy) => _strategy = strategy;
public void SetStrategy(ISortStrategy strategy) => _strategy = strategy;
public void ExecuteSort(List<int> list) => _strategy.Sort(list);
}