Адаптер (шаблон проектування)
Матеріал з Вікіпедії — вільної енциклопедії.
Адаптер, Adapter — структурний шаблон проектування, призначений для організації використання функцій об'єкту, недоступного для модифікації, через спеціально створений інтерфейс.
Зміст |
[ред.] Основні характеристики
[ред.] Завдання
Система підтримує необхідні дані і поведінку, але має невідповідний інтерфейс. Найчастіше шаблон Адаптер застосовується якщо необхідно створити клас, похідний від знов визначуваного або вже існуючого абстрактного класу.
[ред.] Спосіб рішення
Адаптер передбачає створення класу-оболонки з необхідним інтерфейсом.
[ред.] Учасники
Клас Adapter приводить інтерфейс класу Adaptee у відповідність з інтерфейсом класу Target (спадкоємцем якого є Adapter). Це дозволяє об'єкту Client використовувати об'єкт Adaptee так, немов він є екземпляром класу Target.
[ред.] Наслідки
Шаблон Адаптер дозволяє включати вже існуючі об'єкти в нові об'єктні структури, незалежно від відмінностей в їх інтерфейсах.
[ред.] Реалізація
Включення вже існуючого класу в інший клас. Інтерфейс включаючого класу приводиться у відповідність з новими вимогами, а виклики його методів перетворяться у виклики методів включеного класу.
[ред.] Зауваження і коментарі
Шаблон Адаптер дозволяє в процесі проектування не приймати до уваги можливі відмінності в інтерфейсах вже існуючих класів. Якщо є клас, що володіє необхідними методами і властивостями (принаймні, концептуально), то при необхідності завжди можна скористатися шаблоном Адаптер для приведення його інтерфейсу до потрібного вигляду.
Близьким Адаптеру є шаблон Фасад, не завжди можна відрізнити один від другого[1].
[ред.] Застосування шаблону
Типовим прикладом використання шаблону Адаптер можна назвати створення класів, що приводять до єдиного інтерфейсу функції мови PHP що забезпечують доступ до різних СУБД[2].
Варіант вирішення даної проблеми з використанням шаблону Адаптер показаний на малюнку.
[ред.] Примітки
- ↑ Різниця полягає в тому, що шаблон Фасад призначений для спрощення інтерфейсу, тоді як шаблон Адаптер призначений для приведення різних існуючих інтерфейсів до єдиного необхідного вигляду.
- ↑ В мові PHP доступ до СУБД реалізований у вигляді набору функцій, для кожної СУБД вони мають різні найменування і, іноді, різний набір використовуваних параметрів, що приводить до значних проблем при переході з однією СУБД на іншу, якщо такий перехід наперед не забезпечений використанням шаблону Адаптер.

