За последние 24 часа нас посетили 19412 программистов и 1743 робота. Сейчас ищут 1136 программистов ...

Выбор паттерна.

Тема в разделе "PHP для новичков", создана пользователем LAMER83, 1 июл 2025.

  1. LAMER83

    LAMER83 Новичок

    С нами с:
    25 янв 2023
    Сообщения:
    3
    Симпатии:
    0
    Добрый день. Есть задача сделать движок для обработки заданий. Что-то автоматически что-то с вмешательством администратора. На основе какого паттерна сделать реализацию? Сейчас склоняюсь к абстрактной фабрике.

    Постараюсь объяснить как вижу.
    Есть действие для создания задания.
    Фабрика принимает объект задания и на основании типа задания принимает решение какой класс будет это обрабатывать. Также будет учитываться состояние (прогресс), но это детали.
    Задания могут быть обсалютно разные. Скажем от подтверждения регистрации на сайте или подтверждение и выпуск сертификата с отправкой пользователю.
     
  2. brevis

    brevis Активный пользователь

    С нами с:
    23 июл 2019
    Сообщения:
    95
    Симпатии:
    25
    Классный паттерн. Я бы еще порекомендовал Information Expert
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А причём здесь абстрактная фабрика? Абстрактная - это когда ты выносишь какую-нибудь фабрику в интерфейс, и подставляешь потом разные фабрики. Вот пример из моего проекта: мне нужно сделать проверку оплат на GooglePlay и Apple там чегой-то, но пока там всё разрулят по всяким требованиям, чтоб можно было начать тестирование с реальными API, мне надо было проверить что у меня всё остальное работает. Таким образом, я сделал интерфейс фабрики валидатора платежей, и одна фабрика создаёт реальные валидаторы, которые вызывают соответствующие API, а другая фабрика - фейковые, которые просто возвращают успех, чтоб можно было проверить всю остальную логику после отработки платежа.

    А у тебя же просто фабрика получается, если она одна. Плюс паттер "стратегия" - то, что для разных заданий создаются разные классы.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Задания могут быть событиями, т.е. паттерн Observer (он же Event and Listener, он же Publisher/Subscriber)

    Каждый вид события - отдельный класс. Событие содержит достаточно инфы чтобы слушатель или слушатели мог(ли) обработать задание.

    Слушатель подписывается на определенный класс событий.

    В PHP даже есть встроенные классы для поддержки Observer. В различных фреймворках есть свои реализации. Можешь почитать, например, эту статью на Medium: Observer Pattern in PHP 8+