Skip to main content

Чим «Фасад» відрізняється від «Адаптера»?

Фасад (Facade) і Адаптер (Adapter) справді схожі - обидва створюють прошарок між клієнтом і системою, - але вирішують різні задачі.


1. Мета

  • Facade спрощує роботу з уже сумісною, але складною системою. → робить інтерфейс простішим.
  • Adapter робить несумісні інтерфейси сумісними. → робить інтерфейс придатним.

Приклад:

  • Фасад приховує за собою десятки класів (VideoConverter замість Codec, Reader, Mixer).
  • Адаптер підганяє старий клас (OldPlayer) під новий інтерфейс (MediaPlayer).

2. Контекст використання

СитуаціяЩо підходить
Потрібно скоротити складність APIFacade
Потрібно поєднати несумісні інтерфейсиAdapter

3. Взаємини із системою

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

4. Зміна інтерфейсу

  • Facade залишає інтерфейси підсистем незмінними, просто об'єднує їх у спрощену точку входу.
  • Adapter перекладає один інтерфейс в інший.

5. Аналогія

  • Фасад - це рецепшн у готелі: ти не бачиш внутрішню кухню, просто звертаєшся через одного співробітника.
  • Адаптер - це перехідник для розетки: він робить несумісні роз'єми сумісними.

6. Висновок

КритерійFacadeAdapter
МетаСпростити доступ до системиПоєднати різні інтерфейси
Змінює інтерфейсНіТак
ЗастосуванняДля власних підсистемДля зовнішніх або старих модулів
РезультатПростотаСумісність

Підсумок: Фасад - про спрощення взаємодії, Адаптер - про сумісність різних інтерфейсів.

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

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

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