Добрый день. Есть задача сделать движок для обработки заданий. Что-то автоматически что-то с вмешательством администратора. На основе какого паттерна сделать реализацию? Сейчас склоняюсь к абстрактной фабрике. Постараюсь объяснить как вижу. Есть действие для создания задания. Фабрика принимает объект задания и на основании типа задания принимает решение какой класс будет это обрабатывать. Также будет учитываться состояние (прогресс), но это детали. Задания могут быть обсалютно разные. Скажем от подтверждения регистрации на сайте или подтверждение и выпуск сертификата с отправкой пользователю.
А причём здесь абстрактная фабрика? Абстрактная - это когда ты выносишь какую-нибудь фабрику в интерфейс, и подставляешь потом разные фабрики. Вот пример из моего проекта: мне нужно сделать проверку оплат на GooglePlay и Apple там чегой-то, но пока там всё разрулят по всяким требованиям, чтоб можно было начать тестирование с реальными API, мне надо было проверить что у меня всё остальное работает. Таким образом, я сделал интерфейс фабрики валидатора платежей, и одна фабрика создаёт реальные валидаторы, которые вызывают соответствующие API, а другая фабрика - фейковые, которые просто возвращают успех, чтоб можно было проверить всю остальную логику после отработки платежа. А у тебя же просто фабрика получается, если она одна. Плюс паттер "стратегия" - то, что для разных заданий создаются разные классы.
Задания могут быть событиями, т.е. паттерн Observer (он же Event and Listener, он же Publisher/Subscriber) Каждый вид события - отдельный класс. Событие содержит достаточно инфы чтобы слушатель или слушатели мог(ли) обработать задание. Слушатель подписывается на определенный класс событий. В PHP даже есть встроенные классы для поддержки Observer. В различных фреймворках есть свои реализации. Можешь почитать, например, эту статью на Medium: Observer Pattern in PHP 8+