Плагін () — шаблон проєктування, який дозволяє підставити значення для абстракції не під час компіляції, а під час виконання програми.

Опис

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

Даний шаблон пропонує винести реєстрацію сервісів із коду в зовнішній ресурс та підставляти значення для абстракції під час виконання програми.

Реалізація

Нехай нам необхідно генерувати ідентифікатор для об'єкта, який буде збережений у сховище. Зрозуміло, що для розробки, нам головне швидкість, а для роботи надійність. Напишемо реалізацію обох класів, які потім підставлятимемо динамічно.

Тоді напишемо фабрику, яка динамічно визначатиме необхідну реалізацію.

Сам файл конфігурацій може виглядати наступним чином, та при потребі змінюватись у кожному середовищі.

Окрім файлів існують й інші способи збереження конфігурацій. Наприклад, це може бути зовнішній сервіс абощо.

Див. також Плагін Впровадження залежностей Фабричний метод (шаблон проєктування) IoC контейнер

Джерела Plugin