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 для контроля поведения.