OCP может быть лучше понят, если подумать о классах или компонентах, предоставляемых поставщиком A в какой-то библиотеке черного ящика, для использования пользователями B, C и D (обратите внимание, что это просто ментальная модель, которую я использую для ясности, не имеет значения, если в действительности единственным пользователем класса является сам А.).
Если B, C и D могут использовать или повторно использовать предоставленные классы для разных вариантов использования, без необходимости изменения исходного кода библиотеки, тогда компонент удовлетворяет требованиям OCP ( в отношении категории вариантов использования ). Есть разные способы для достижения этой цели, как
сделать класс наследуемым (обычно в сочетании с шаблоном метода шаблона или шаблоном стратегии)
предоставляя «точки внедрения» для внедрения зависимости
путем предоставления параметров конфигурации для класса или компонента (например, с помощью параметра конструктора «процент налога», как в вашем случае, или с помощью какого-либо другого механизма конфигурации)
может быть, другие средства, в зависимости от языка программирования или экосистемы
Типичные примеры, которые вы найдете в учебниках, часто бывают первого или второго типа (я полагаю, потому что, по мнению авторов этих книг, третий тип слишком тривиален, чтобы о нем упоминать).
Как видите, это не имеет ничего общего с запретом любых изменений исходного кода поставщиком A (например, для исправления ошибок, оптимизации или добавления новых функций обратно совместимым образом), что совершенно не связано с OCP. OCP рассказывает о том, как A проектирует интерфейс и детализацию компонентов в lib, поэтому различные сценарии повторного использования (например, повторное использование с различными налоговыми ставками) не вызывают автоматически требования к изменениям.
Поэтому, несмотря на то, что вам здесь говорят другие, ответ однозначно «да» , это будет нарушением OCP.
РЕДАКТИРОВАТЬ: кажется, между кем-то написал подробный пост в блоге именно на эту тему. Хотя некоторые его части можно было бы сформулировать лучше (как указал Дерек Элкинс), автор, как правило, разделяет мою точку зрения о том, что «выполнение OCP» - это не абсолютная собственность, а нечто, что можно оценить только в контексте определенного категории изменений требований.