Классы должны быть открыты для расширения, но закрыты для модификации. Это значит, что поведение класса можно расширить без изменения его исходного кода. Обычно это достигается через наследование или использование интерфейсов.
Пример нарушения OCP: Изменение существующего класса для добавления нового функционала (например, новый способ оплаты).
Решение: Использовать интерфейсы или абстрактные классы для расширения функционала без изменения базового кода.
publicinterfacePaymentMethod{voidpay(doubleamount);}publicclassCreditCardPaymentimplementsPaymentMethod{@Overridepublicvoidpay(doubleamount){// Оплата через кредитную карту}}publicclassPayPalPaymentimplementsPaymentMethod{@Overridepublicvoidpay(doubleamount){// Оплата через PayPal}}