Классы должны быть открыты для расширения, но закрыты для изменений. Цель состоит в том, чтобы классы можно было легко расширять новым поведением без изменения существующего кода. Это позволяет строить архитектуры, устойчивые к изменениям и достаточно гибкие для поддержки новой функциональности в соответствии с изменившимися требованиями.