advanced

Open/Closed Principle

Проектируйте stable extension seams для реальной variation, избегая speculative plugin points, которые усложняют простой code.

OCP: сущности открыты для расширения, закрыты для модификации — новое поведение без правки стабильного ядра. Strategy interfaces, plugin registries, configuration-driven handlers, композиция вместо растущих switch.

Точки расширения под реальную частоту вариаций — не каждый `if (type)` заслуживает factory.

На интервью: payment switch на extensible registration и когда OCP — перебор.

Типовые ошибки: speculative plugin frameworks; abstract factory на два case; «закрытый» код, где каждая фича правит core.

Компромисс — расширяемость против стоимости понимания косвенности.

Чеклист:

  • Реальные оси вариации.
  • Расширение новыми типами, не правкой switch.
  • Без speculative extension hooks.