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.