Я недавно пытался узнать об основных принципах проектирования, и OCP немного смутил меня.Имеет смысл, что когда происходит изменение, предпочтительно расширить систему, а не модифицировать существующие и рабочие части.Но не является ли это скорее принципом того, как осуществлять изменения в системе, а не как ее проектировать?Разве весь код в основном не открыт для расширения с использованием подклассов?И как можно закрыть любой код для модификации - не зависит ли это от того, как лицо, реализующее изменение, решит его использовать?
Возможно, пример кода, который не следует OCP и как именноэто нарушило бы принцип, и мне было бы полезно понять это.
Спасибо