Чим «Фасад» відрізняється від «Адаптера»?
Фасад (Facade) і Адаптер (Adapter) справді схожі - обидва створюють прошарок між клієнтом і системою, - але вирішують різні задачі.
1. Мета
- Facade спрощує роботу з уже сумісною, але складною системою. → робить інтерфейс простішим.
- Adapter робить несумісні інтерфейси сумісними. → робить інтерфейс придатним.
Приклад:
- Фасад приховує за собою десятки класів (
VideoConverterзамістьCodec,Reader,Mixer). - Адаптер підганяє старий клас (
OldPlayer) під новий інтерфейс (MediaPlayer).
2. Контекст використання
| Ситуація | Що підходить |
|---|---|
| Потрібно скоротити складність API | Facade |
| Потрібно поєднати несумісні інтерфейси | Adapter |
3. Взаємини із системою
- Facade працює з внутрішніми компонентами однієї системи - це зовнішня оболонка навколо складного модуля.
- Adapter з'єднує дві різні системи, у яких різні інтерфейси.
4. Зміна інтерфейсу
- Facade залишає інтерфейси підсистем незмінними, просто об'єднує їх у спрощену точку входу.
- Adapter перекладає один інтерфейс в інший.
5. Аналогія
- Фасад - це рецепшн у готелі: ти не бачиш внутрішню кухню, просто звертаєшся через одного співробітника.
- Адаптер - це перехідник для розетки: він робить несумісні роз'єми сумісними.
6. Висновок
| Критерій | Facade | Adapter |
|---|---|---|
| Мета | Спростити доступ до системи | Поєднати різні інтерфейси |
| Змінює інтерфейс | Ні | Так |
| Застосування | Для власних підсистем | Для зовнішніх або старих модулів |
| Результат | Простота | Сумісність |
Підсумок: Фасад - про спрощення взаємодії, Адаптер - про сумісність різних інтерфейсів.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.