
Как учебные примеры Factory Method ломают SOLID
infinity92 только что Как учебные примеры Factory Method ломают SOLID Простой 10 мин 11 Блог компании Битрикс24 PHP * Программирование * Мнение Привет! Меня зовут Александр, я разработчик в Битрикс24.Заметил такую...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: infinity92 только что Как учебные примеры Factory Method ломают SOLID Простой 10 мин 11 Блог компании Битрикс24 PHP * Программирование * Мнение Привет! Меня зовут Александр, я разработчик в Битрикс24. Заметил такую особенность во многих учебных статьях и туториалах: в популярных объяснениях паттернов часто не хватает оговорки, что ради упрощения объяснения в примере нарушены принципы SOLID.
Почему так: многие из примеров решают задачу обучения, а не задачу проектирования архитектуры. То есть примеры часто короткие и удобные для объяснения, но иногда вместе с этим они теряют важные свойства самого паттерна. Особенно часто это происходит с Factory Method.
Технические детали
В этой статье мы разберём несколько популярных примеров этого паттерна, посмотрим, где именно возникает проблема, и обсудим альтернативы в реальных проектах. Чтобы дальше не путаться в терминах, сначала коротко зафиксируем, что такое принцип OCP: программные сущности должны быть открыты для расширения, но закрыты для изменения. Проще говоря, если завтра в системе появляется новый тип объекта, нам хотелось бы добавить новый класс и подключить его к системе, а не переписывать уже работающий код в нескольких местах.
Примеры для разбораНиже несколько материалов, где фабрика или Factory Method объясняются через выбор реализации по строке, switch, match или похожую центральную развилку. Такие примеры полезны как материал для разбора: внешне они выглядят как паттерн, но при добавлении нового типа часто требуют менять уже существующую фабрику. JavaRush: Паттерн проектирования Factory — пример, с которого начался этот разбор.
Quipoin: Factory Method Design Pattern in Java with Real Example — пример NotificationFactory с выбором через switch. MagicBell: Notification System Design — пример NotificationFactoryImpl с switch(type) и заявленным OCP. JavaGuides: Java Factory Pattern with Real-World Examples — показано нарушение OCP через if/else, а затем фабрика со switch.
Отраслевые последствия
MakeDev: Фабричный метод на PHP — русскоязычный пример с FactoryAbstract::create($type) и switch. PHPLex: Factory Pattern — PHP-пример с enum и match. io: Factory Pattern in Python — пример NotificationFactory.
create_notifier() через if/elif. LIG: PHP Factory Pattern — пример, где проблема switch обсуждается, но похожая развилка остается в фабриках. Christopher Okhravi: Factory Method Pattern — полезно как контрастное объяснение разницы между Simple Factory и Factory Method.
Все примеры выглядят довольно разумно. Проблема становится заметна не в первой версии кода, а позже, когда система начинает расти. Важно: проблема не в фабричном методе как паттерне, а в примерах, где фабрикой называют обычный create($type) с набором if/elseif.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





