Яка основна мета патерна «Адаптер»?
Основна мета патерна Adapter (Адаптер) - зробити несумісні інтерфейси сумісними, тобто дозволити об'єктам з різними інтерфейсами працювати разом, не змінюючи їхній код.
1. Суть ідеї
Іноді потрібно використати сторонній або застарілий клас, інтерфейс якого не збігається з тим, що очікує решта системи. Адаптер виступає як прошарок (обгортка), яка «перекладає» виклики одного інтерфейсу в інший, забезпечуючи сумісність.
2. Коли використовується
- Коли потрібно інтегрувати старий код з новою системою.
- Коли є бібліотека або зовнішній API, інтерфейс якого не можна змінити.
- Коли різні компоненти системи повинні працювати через єдиний інтерфейс, але реалізовані по-різному.
3. Приклад (Java)
Припустимо, у нас є сучасний інтерфейс:
interface MediaPlayer {
void play(String file);
}і старий клас:
class OldPlayer {
void startPlayback(String filePath) {
System.out.println("Playing " + filePath);
}
}Адаптер «перекладає» інтерфейс:
class PlayerAdapter implements MediaPlayer {
private OldPlayer oldPlayer = new OldPlayer();
public void play(String file) {
oldPlayer.startPlayback(file);
}
}Тепер старий OldPlayer можна використовувати в новій системі через інтерфейс MediaPlayer.
4. Переваги
- Дозволяє повторно використовувати готовий код, не змінюючи його.
- Забезпечує гнучкість і сумісність між різними системами.
- Підтримує принцип відкритості/закритості (OCP): адаптер додається, а не модифікує наявний код.
5. Висновок
Adapter вирішує задачу інтеграції несумісних інтерфейсів, перетворюючи їх на єдиний формат взаємодії, не порушуючи інкапсуляцію і не вимагаючи змін у вихідних класах.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.