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

Адаптери класу на основі (множинного) спадкування

Адаптери класів можуть бути реалізовані на мовах, які підтримують множинне спадкування. Мови програмування Java, C# або PHP не підтримує множинне успадкування, однак мають інтерфейси. Таким чином, такі шаблони не можуть бути легко реалізовані в цих мовах. Хорошим прикладом мови програмування, де можна з легкістю реалізувати проектування, є мова C.

Патерн Адаптер використовує спадкування замість композиції. Це означає, що замість того, щоб делегувати виклики (Adaptee), він наслідує його. На закінчення всього адаптер класу повинен розділити на підкласи і (Target), і сам (Adapter).

При такому підході є свої переваги і недоліки:

  • Патерн адаптує певний клас (Adaptee). Клас розширює цю адаптацію. Якщо той підклас, він не може бути адаптований існуючим адаптером.
  • Шаблон не вимагає весь код, необхідний для делегування, який повинен бути написаний для класу (Adapter).
  • Якщо об’єкт (Target) представлений інтерфейсом, а не класом, ми можемо говорити про “класових” адаптерах, тому що ми можемо реалізувати стільки інтерфейсів, скільки захочемо.