Skip to main content

Як Abstract Factory сприяє слабкій зв'язності компонентів?

Abstract Factory сприяє слабкій зв'язності компонентів, тому що повністю ізолює клієнтський код від конкретних класів, з якими він працює.


1. Відокремлення клієнта від конкретних реалізацій

Клієнт знає лише абстрактний інтерфейс фабрики (GUIFactory), а не конкретні класи (WinFactory, MacFactory). Він звертається до фабрики через спільний інтерфейс:

java
GUIFactory factory = new MacFactory(); Button button = factory.createButton();

Клієнт не знає і не переймається, який саме об'єкт буде створено - WindowsButton чи MacButton. Це знижує залежність між компонентами.


2. Залежність від абстракцій, а не від реалізацій

Код взаємодіє з інтерфейсами продуктів (Button, Checkbox), а не з їхніми конкретними реалізаціями. Якщо замінити MacFactory на WinFactory, система продовжить працювати без змін.


3. Гнучка заміна сімейств продуктів

Можна підмінити одне сімейство продуктів іншим, просто передавши нову фабрику, без переписування логіки. Це досягається завдяки інверсії залежностей (Dependency Inversion Principle): високорівневий код залежить від абстракцій, а не від деталей.


4. Локалізація змін

Якщо потрібно змінити реалізацію продукту (наприклад, як малюється кнопка), це стосується лише конкретної фабрики і продукту. Клієнтський код залишається незмінним - його зв'язність із фабриками мінімальна.


Висновок: Abstract Factory створює прошарок абстракцій між клієнтом і реалізаціями, завдяки чому код стає незалежним, легко розширюваним і менш схильним до каскадних змін.

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

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

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