Принцип открытости/закрытости | Open Closed Principle | OCP
Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для изменения.
Идея была в том, что однажды разработанная реализация класса в дальнейшем требует только исправления ошибок, а новые или изменённые функции требуют создания нового класса. Этот новый класс может переиспользовать код исходного класса через механизм наследования. Производный подкласс может реализовывать или не реализовывать интерфейс исходного класса.