intermediate

Factory Method

Переносите variant selection в factory operation, чтобы callers зависели от product contract, а не concrete construction branches.

Factory Method позволяет подклассам или отдельным создателям выбирать продукт для инстанцирования, пока callers зависят от общего интерфейса. Убирает разросшиеся `if/else` из бизнес-потоков и локализует влияние нового варианта. От Simple Factory отличается расширяемостью через полиморфизм.

На интервью: сравните Factory Method с прямым `new` и с семействами Abstract Factory. Пример: payment processor или notification channel.

Типовые ошибки: factory знает слишком много concrete types; возврат concrete class вместо стабильного интерфейса; нетестируемые static factory methods.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Callers зависят от интерфейса продукта, не от класса.
  • Выбор варианта — в одной factory-иерархии.
  • Новый вариант — новый класс, не разбросанные conditionals.
  • Тесты инжектят factories для контроля поведения.