Skip to main content

Яка основна мета патерна «Адаптер»?

Основна мета патерна Adapter (Адаптер) - зробити несумісні інтерфейси сумісними, тобто дозволити об'єктам з різними інтерфейсами працювати разом, не змінюючи їхній код.


1. Суть ідеї

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


2. Коли використовується

  • Коли потрібно інтегрувати старий код з новою системою.
  • Коли є бібліотека або зовнішній API, інтерфейс якого не можна змінити.
  • Коли різні компоненти системи повинні працювати через єдиний інтерфейс, але реалізовані по-різному.

3. Приклад (Java)

Припустимо, у нас є сучасний інтерфейс:

java
interface MediaPlayer { void play(String file); }

і старий клас:

java
class OldPlayer { void startPlayback(String filePath) { System.out.println("Playing " + filePath); } }

Адаптер «перекладає» інтерфейс:

java
class PlayerAdapter implements MediaPlayer { private OldPlayer oldPlayer = new OldPlayer(); public void play(String file) { oldPlayer.startPlayback(file); } }

Тепер старий OldPlayer можна використовувати в новій системі через інтерфейс MediaPlayer.


4. Переваги

  • Дозволяє повторно використовувати готовий код, не змінюючи його.
  • Забезпечує гнучкість і сумісність між різними системами.
  • Підтримує принцип відкритості/закритості (OCP): адаптер додається, а не модифікує наявний код.

5. Висновок

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

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.