Приклад
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);
}
}
Коли застосовувати
- Є кілька варіантів одного алгоритму, і потрібно перемикатись між ними
- Хочете уникнути великих if/switch у коді, що вибирає алгоритм
- Поведінка має конфігуруватись ззовні або змінюватись у runtime