Адаптер (шаблон проектування)

Матеріал з Вікіпедії — вільної енциклопедії.

Перейти до: навігація, пошук

Адаптер, Adapter — структурний шаблон проектування, призначений для організації використання функцій об'єкту, недоступного для модифікації, через спеціально створений інтерфейс.

Зміст

[ред.] Основні характеристики

[ред.] Завдання

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

[ред.] Спосіб рішення

Адаптер передбачає створення класу-оболонки з необхідним інтерфейсом.

[ред.] Учасники

Клас Adapter приводить інтерфейс класу Adaptee у відповідність з інтерфейсом класу Target (спадкоємцем якого є Adapter). Це дозволяє об'єкту Client використовувати об'єкт Adaptee так, немов він є екземпляром класу Target.

[ред.] Наслідки

Шаблон Адаптер дозволяє включати вже існуючі об'єкти в нові об'єктні структури, незалежно від відмінностей в їх інтерфейсах.

[ред.] Реалізація

Включення вже існуючого класу в інший клас. Інтерфейс включаючого класу приводиться у відповідність з новими вимогами, а виклики його методів перетворяться у виклики методів включеного класу.

[ред.] Зауваження і коментарі

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

Близьким Адаптеру є шаблон Фасад, не завжди можна відрізнити один від другого[1].

[ред.] Застосування шаблону

Типовим прикладом використання шаблону Адаптер можна назвати створення класів, що приводять до єдиного інтерфейсу функції мови PHP що забезпечують доступ до різних СУБД[2].

Варіант вирішення даної проблеми з використанням шаблону Адаптер показаний на малюнку.

Приклад використання шаблона Адаптер

[ред.] Примітки

  1. Різниця полягає в тому, що шаблон Фасад призначений для спрощення інтерфейсу, тоді як шаблон Адаптер призначений для приведення різних існуючих інтерфейсів до єдиного необхідного вигляду.
  2. В мові PHP доступ до СУБД реалізований у вигляді набору функцій, для кожної СУБД вони мають різні найменування і, іноді, різний набір використовуваних параметрів, що приводить до значних проблем при переході з однією СУБД на іншу, якщо такий перехід наперед не забезпечений використанням шаблону Адаптер.

[ред.] Джерела

Adapter pattern

Особисті інструменти