Sobes.tech
Back to questions
Junior — Middle
56

Можешь привести пример ситуации, когда принцип открытости/закрытости нарушается?

Answer from AI

sobes.tech AI

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

Пример нарушения:

Допустим, есть класс, который вычисляет стоимость доставки для разных типов товаров, и для добавления нового типа товара приходится менять метод с условными операторами:

class DeliveryCalculator {
    public double calculatePrice(String productType) {
        if (productType.equals("Book")) {
            return 5.0;
        } else if (productType.equals("Electronics")) {
            return 10.0;
        }
        // Для добавления нового типа товара нужно менять этот метод
        else if (productType.equals("Furniture")) {
            return 20.0;
        }
        return 0;
    }
}

Здесь при добавлении нового типа товара приходится модифицировать метод calculatePrice, что нарушает принцип открытости/закрытости. Правильнее было бы использовать полиморфизм, например, создать интерфейс Product с методом getDeliveryPrice(), и для каждого типа товара реализовать этот интерфейс.