Що нового в Архітектурному Шаблоні HMVC порівняно з MVC?! І яка різниця між Архітектурним Шаблоном та Шаблоном Проектування?!

pic

Перед тим, як почати, яка різниця між Архітектурними Шаблонами та Шаблонами Проектування?

Шаблони Проектування, як сказав хтось, — це рішення для вирішення проблем за допомогою конкретних підходів чи компонентів, таких як Factory тощо. Що стосується Архітектури, то це повна структура системи та спосіб організації коду для вирішення проблеми.

Отже, у чому різниця? Це просто: обидва вони досить схожі, але різниця полягає в тому, що Шаблони Проектування вирішують одну частину або компонент, а Архітектура охоплює всю програму.

Наприклад, можна сказати, що Шаблон Проектування — це маленька частина, що вирішує проблему, як охолоджувальна система в ПК, а Архітектура — це структура всього ПК.

Ще одне питання: чи вважається MVC Шаблоном Проектування чи Архітектурним Шаблоном? Пряма відповідь: це вважається Архітектурним Шаблоном або, як деякі кажуть, Архітектурною Концепцією.

Оскільки це трохи застаріло, я знайшов кілька статей, що кажуть, що це Шаблон Проектування 😅, і є багато думок та обговорень на цю тему.

Але повернімося до теми HMVC. Це оновлення MVC, і його визначення — це Ієрархічна Модель-Погляд-Контролер (Hierarchical Model-View-Controller). Чому це оновлення? А точніше, можна сказати, що воно додає новий рівень, як велика ієрархія, де з верхнього рівня з'являються нові Модулі. Найважливіше, що відрізняє його, це те, що воно дозволяє побудувати кожну функцію як окремий блок, або точніше — Модуль. Уявіть, якщо у вас є система ERP чи CRM, є багато частин, що взаємопов'язані. Наприклад, ви створюєте Модуль для HR, а інший для Блогу. Кожен Модуль — це повний MVC, тобто це як велика програма, що містить менші програми. Кожен з них є незалежним від інших з мінімальними з'єднаннями, якщо це необхідно. Це дозволяє вам, наприклад: легко переміщати цю частину з одного проєкту в інший. Або навіть розвивати один без впливу на решту програми. Або ви навіть можете видалити Модуль без побічних ефектів. І якщо ви не помітили, інженере, те, що Модуль — це повний MVC, означає, що кожен Модуль має власну Модель (Model), Контролер (Controller), Вид (View), Публічний (Public) тощо.

Як ми використовуємо цей Архітектурний Шаблон у Laravel? Є простий пакет під назвою Laravel Module, який є: nwidart/laravel-modules, і він налаштовує все, а також додає Команди, щоб, коли ви створюєте Модель чи щось інше, ви могли вказати, який Модуль хочете. І якщо ви використовуєте Filament і хочете реалізувати HMVC, можна використовувати цей пакет разом з цим плагіном: https://filamentphp.com/plugins/coolsam-modules.

Для відома, він також використовує пакет nwidart. І наостанок, інженере, скажіть, який Архітектурний Шаблон вам найбільше подобається або який ви використовували? Я не пробував HMVC раніше, поки друг не сказав, що вони використовують його в своїх проєктах, і, чесно кажучи, це чудово для великих проєктів з точки зору організації.

Перекладено з: What's ne in the HMVC Architectural Pattern compared to MVC?! and What is the difference between Architecture Pattern and a Design Pattern?!

Leave a Reply

Your email address will not be published. Required fields are marked *