Як Factory Method пов'язаний із принципом відкритості/закритості (OCP)?
Factory Method напряму підтримує принцип відкритості/закритості (OCP), бо дозволяє розширювати поведінку системи без зміни наявного коду.
1. Суть OCP
Принцип говорить:
Класи мають бути відкриті для розширення, але закриті для модифікації. Тобто при додаванні нової поведінки ми повинні додавати код, а не змінювати вже наявний.
2. Як це працює у Factory Method
Замість того щоб у клієнтському коді жорстко прописувати, який об'єкт створювати через new, ми використовуємо абстрактний метод createProduct().
Якщо з'являється новий тип продукту, ми просто:
- створюємо новий підклас,
- перевизначаємо в ньому фабричний метод.
abstract class Creator {
abstract Product createProduct();
}
class ConcreteCreatorA extends Creator {
Product createProduct() { return new ProductA(); }
}
class ConcreteCreatorB extends Creator {
Product createProduct() { return new ProductB(); }
}При цьому сам базовий код, що використовує createProduct(), залишається незмінним.
3. Приклад
Якщо додати новий вид транспорту (наприклад, Plane), не потрібно змінювати клас Logistics - достатньо створити AirLogistics, перевизначивши createTransport().
4. Висновок
Factory Method дозволяє додавати нові типи об'єктів без зміни наявної логіки, що робить систему гнучкою і розширюваною, повністю відповідаючи принципу OCP.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.