Шаблон Strategy (Стратегия)
28-08-2019Время чтения ~ 1 мин.PHP/ООП 7502
Strategy — поведенческий шаблон, где используются разные алгоритмы в одном объекте. То есть Стратегия позволяет выделить отдельные конкретные алгоритмы, а после их использовать в базовом классе.
Пример кода вы можете посмотреть на гитхабе. Рассмотрим его работу.
Есть некий базовый класс (Context), который может обрабатывать какие-то данные разными способами. Например обработка простого текста, json-, xml-данных и т.д. Чтобы не создавать классы под каждый обработчик, их делают отдельными (StrategyA, StrategyB). А чтобы объекты были совместимы, они реализуют единый интерфейс (Strategy), о котором также знает базовый класс.
При инстанцировании базового класса, в его конструктор передаётся и объект алгоритма. Дальше он выполняется собственным методом.
Шаблон Strategy достаточно простой для понимания, поэтому может использоваться в самых разных задачах. Главное его преимущество в том, что с его помощью мы можем разделить код на подзадачи, и при этом отказаться от сложных if-условий в базовом классе. Ну и помимо всего, при таком подходе, очень просто увеличивать функциональность приложения, не изменяя базовый класс: достаточно добавить новый класс алгоритма.