Skip to main content

Чим Factory Method відрізняється від звичайного конструктора?

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


1. Контроль над створенням

  • Конструктор - жорстко фіксований: new Car() завжди створює Car.

  • Factory Method - дозволяє вирішити під час виконання, який об'єкт створити:

    java
    Transport t = createTransport(); // може бути Truck або Ship

2. Гнучкість

  • Конструктор не можна перевизначити.
  • Фабричний метод можна успадковувати і змінювати поведінку, не чіпаючи решту коду.

3. Інкапсуляція логіки створення

  • Конструктор не приховує процес створення.
  • Фабричний метод може містити складну логіку: перевірку, кешування, вибір типу залежно від даних.

4. Розширюваність

  • При додаванні нового типу з конструктором потрібно переписувати клієнтський код.
  • З фабричним методом достатньо створити новий підклас із потрібною реалізацією.

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

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

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

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