Skip to main content

У чому сенс розділення абстракції та реалізації в патерні Bridge?

Сенс розділення абстракції та реалізації в патерні Bridge полягає в тому, щоб позбавити систему жорсткої зв'язаності між ними і дозволити змінювати обидві сторони незалежно.


1. Без Bridge: жорсткий зв'язок

Коли абстракція і реалізація об'єднані в одному класі, будь-яка зміна способу реалізації вимагає зміни й в абстракції. Наприклад, якщо є класи RemoteForTV, RemoteForRadio, AdvancedRemoteForTV, AdvancedRemoteForRadio, то під час додавання нового пристрою або типу пульта доводиться додавати нові комбінації класів. Це роздуває кількість коду.


2. З Bridge: дві незалежні ієрархії

Bridge розриває цей зв'язок:

  • Абстракція визначає що робить система (наприклад, «Пульт»).
  • Реалізація визначає як саме це виконується (наприклад, «Телевізор», «Радіо»).

Абстракція містить посилання на інтерфейс реалізації, а не на конкретний клас. Тепер можна вільно комбінувати: SimpleRemote + TV, AdvancedRemote + Radio, VoiceRemote + Projector - без нових класів.


3. Навіщо це потрібно

  • Гнучкість: можна змінювати реалізацію (наприклад, інший драйвер, інший API) без зміни абстракції.
  • Масштабованість: легко додавати нові типи абстракцій або реалізацій.
  • Підтримка принципу відкритості/закритості (OCP): нові можливості додаються через розширення, а не переписування.

4. Приклад

java
// Абстракція abstract class Remote { protected Device device; Remote(Device device) { this.device = device; } abstract void togglePower(); } // Реалізація interface Device { void turnOn(); void turnOff(); } // Дві незалежні лінії розвитку class TV implements Device { ... } class Radio implements Device { ... } class AdvancedRemote extends Remote { ... }

Тепер можна підключити будь-який Device до будь-якого Remote - без дублювання коду.


5. Висновок

Розділення абстракції та реалізації в патерні Bridge усуває жорстку зв'язаність між ними і дозволяє розвивати кожну частину незалежно. Підсумок - гнучка, розширювана і чиста архітектура, де додавання нових пристроїв або функцій не вимагає каскадних змін.

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

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

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