Глоссарий

Strategy Pattern

Strategy — паттерн, выносящий изменяемое поведение в отдельный класс (стратегию) и позволяющий подменять его в runtime. Класс зависит от интерфейса стратегии, а не от конкретной реализации.

Пример

interface SortStrategy {
  sort(array $data): array;
}
class QuickSort implements SortStrategy { ... }
class MergeSort implements SortStrategy { ... }

class Sorter {
  public function __construct(private SortStrategy $strategy) {}
  public function sort(array $data): array {
    return $this->strategy->sort($data);
  }
}

Когда применять