Патерн Адаптер: опис, функції та можливості, поради по роботі

Реалізація

На малюнку нижче показана діаграма класів UML (ЮМЛ) патерну Адаптер.

Класи і об’єкти, які беруть участь у шаблоні проектування:

  • (Target) – визначає специфічний для домену інтерфейс, який використовує Client.
  • (Adapter) – адаптує інтерфейс (Adaptee) до цільового інтерфейсу.
  • (Adaptee) – визначає існуючий інтерфейс, який необхідно адаптувати.
  • (Client) – взаємодіє з об’єктами, відповідними інтерфейсу (Target).
  • Застосування

    Патерн Адаптер використовується в наступних випадках:

    • Коли існує клас (Target), який викликає методи, визначені в інтерфейсі. Крім того, є інший клас (Adapter), який не реалізує інтерфейс, але реалізує операції та методи, які повинні викликатися з першого класу через інтерфейс. У програміста немає можливості змінити ні один з існуючих кодів. Адаптер реалізує свій інтерфейс і стане мостом між двома класами.

    • Коли при написанні класу (Target) для загального використання важливо спиратися на деякі загальні інтерфейси, і у розробника є деякі реалізовані класи, не реалізують інтерфейс. Також цей клас (Target) повинен бути викликаною.

    Хорошим прикладом для застосування адаптера можуть служити оболонки, використовувані для прийняття сторонніх бібліотек і структур: більшість додатків, що використовують сторонні бібліотеки, вживають адаптер в якості проміжного рівня між додатком і сторонньої бібліотекою для відділення додатки від бібліотеки. Якщо необхідно використовувати іншу бібліотеку, для нової бібліотеки потрібно тільки адаптер без необхідності зміни коду програми.