Skip to main content

Як Factory Method пов'язаний із принципом відкритості/закритості (OCP)?

Factory Method напряму підтримує принцип відкритості/закритості (OCP), бо дозволяє розширювати поведінку системи без зміни наявного коду.


1. Суть OCP

Принцип говорить:

Класи мають бути відкриті для розширення, але закриті для модифікації. Тобто при додаванні нової поведінки ми повинні додавати код, а не змінювати вже наявний.


2. Як це працює у Factory Method

Замість того щоб у клієнтському коді жорстко прописувати, який об'єкт створювати через new, ми використовуємо абстрактний метод createProduct(). Якщо з'являється новий тип продукту, ми просто:

  • створюємо новий підклас,
  • перевизначаємо в ньому фабричний метод.
java
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.

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

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

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