Встречается на собеседованиях • сегодня

Приведи пример нарушения принципа Open-Close

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

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

java
class AreaCalculator {
    public double calculate(Object shape) {
        if (shape instanceof Circle) {
            Circle c = (Circle) shape;
            return Math.PI * c.radius * c.radius;
        } else if (shape instanceof Square) {
            Square s = (Square) shape;
            return s.side * s.side;
        }
        throw new IllegalArgumentException("Unknown shape");
    }
}

Проблема: при добавлении новой фигуры (например, Triangle) нужно модифицировать метод calculate(), добавляя новый if-блок. Это нарушает OCP.

Решение: использовать полиморфизм через интерфейс Shape с методом area(), который реализуют все фигуры. Тогда AreaCalculator сможет работать с любыми фигурами без изменений.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы