Каким образом реализуется модульность в архитектуре веб-приложения?

Здравствуйте. Часто говорят про модульность в разрезе темы создания веб-приложений. Что такое эта самая модульность, каким образом она реализуется (контекст: PHP, Laravel)?

Что понимаю под модульностью?

Возможность создания однородной структуры для модулей и простое добавление этих модулей в приложение для расширения функционала. Например, имеется некий функционал по расчету стоимости доставки различными транспортными компаниями (ТК). Естественно, существует не одна ТК и я хочу предложить исчерпывающий список вариантов. Я хочу иметь возможность добавлять новые варианты (назовем их драйверами). Расскажите про лучшие практики и укажите, имеет ли право на существование мой вариант.

Как я себе это вижу или мой вариант.

Во-первых, для некой задачи (в моем случае это доставка) я определяю набор однотипных действий для каждого модуля (а они обязательно будут однотипными, т.к. все они объединены общими родовым признаком - доставка->способ доставки). Далее для каждого из действий я создаю методы класса. Выделяю их в интерфейс. Каждый драйвер (способ доставки) реализует созданный интерфейс. Таким образом достигается однородность структуры модулей. Добавление модулей - это могло бы быть простое добавление файлов (классов, реализующих необходимый интерфейс) в папку, специально отведенную для этого. При помощи reflection в php можно было бы определять количество и качество этих модулей.
  • Вопрос задан
  • 1233 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Для начала давайте разберемся что такое модуль, уж больно много значений у этого слова. Даже в контексте разработки.

То что вы описали следует из:
- принцип единой ответственности - выделить на каждый сценарий проведения операции по объекту
- полиморфизм - объеденение разных объектов имеющих различную реализацию под одним интерфейсом
- инверсия зависимостей - код приложения будет зависеть от интерфейса (абстракции), а подсовывать ему реализацию мы будем исходя из контекста.

И да.... вот этот момент:
При помощи reflection в php можно было бы определять количество и качество этих модулей.


Немного непонятно причем тут Reflections и причем тут качество модулей.

Для описанной вами задачи уже сущестует масса поведенческих паттернов. Конкретно тут применим паттерн стратегия.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@fuckman
В контексте ларавел советую книгу Laravel: From Apprentice To Artisan Advanced Architecture With Laravel 4 Taylor Otwell.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы