Ответы пользователя по тегу Паттерны проектирования
  • Какая должна быть архитектура приложения, без ActiveRecord в Yii2?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Бизнес логику лучше вынести в сервисы. Каждый сервис должен заниматься какими-то своими задачами. Например, один работает с заказами, другой отправляет уведомления. Насколько сервис будет общий или наоборот конкретный, решать вам. Сервисы можно связывать между собой наследованием, агрегацией, композицией (перечислил в порядке от сильной связи до слабой). Чтобы не ломать голову, можно применять уже готовые шаблоны проектирования.

    Изменился статус заказа, нужно отправить уведомления на почту, телеграм и тп. Записать в историю изменения суммы заказа, статуса.

    Здесь напрашивается применение шаблона проектирования Наблюдатель. На изменение статуса создается событие, которое получают все подписчики.

    Обновить/удалить кэш или обновить индекс в elasticSearch

    Здесь я бы подумал на счет использования паттерна Декоратор

    Думаю я не первый кто этим вопросом задался, и уже есть какие то архитектурные решения

    Да, типовые решения уже есть, нужно просто изучить и попробовать на практике для своих задач

    Хотелось бы увидеть какие то примеры, потому что на словах это все просто, создай сервис, добавь репозиторий, там же наблюдателей

    На счет проектов не знаю, можно, наверное, просто поискать на github интересующее. Применение паттернов с примерами хорошо описано здесь https://refactoring.guru/ru/design-patterns/catalog
    Ответ написан
  • Как описать приготовление яичницы в терминах MVC?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Если упрощенно, приготовление яичницы в кафе

    Официант — это Controller
    Повар — это Model
    Яичница на столе — это View

    Посетитель сделал заказ яичницы через официанта (C). Официант передал заказ повару (M). Повар приготовил и официант поставил тарелку на стол (V) посетителю

    Конечно, в оригинальном MVC стол как-то сам должен отображать то, что приготовил повар, без участия официанта :)
    Ответ написан
    6 комментариев