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

  • Пример нарушения OCP: Изменение существующего класса для добавления нового функционала (например, новый способ оплаты).
  • Решение: Использовать интерфейсы или абстрактные классы для расширения функционала без изменения базового кода.
public interface PaymentMethod {
    void pay(double amount);
}
 
public class CreditCardPayment implements PaymentMethod {
    @Override
    public void pay(double amount) {
        // Оплата через кредитную карту
    }
}
 
public class PayPalPayment implements PaymentMethod {
    @Override
    public void pay(double amount) {
        // Оплата через PayPal
    }
}

Мета информация

Область:: 00 Архитектура ПО
Родитель:: SOLID
Источник::
Создана:: 2024-09-27
Автор::

Дополнительные материалы

Дочерние заметки