Что такое open-closed-principle?
Используйте при добавлении новых функций в существующий код. Используйте, когда возникает желание добавить if/else или переключить ветки. Используйте при расширении поведения существующих классов. Источник: yanko-belov/code-craft.