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

Как правильно использовать принцип Open-Closed

Принцип Open-Closed (OCP) гласит, что классы должны быть открыты для расширения, но закрыты для модификации. Достигается через:

  1. Использование абстракций (интерфейсов/абстрактных классов)
  2. Композицию вместо наследования
  3. Паттерны типа Strategy, Decorator

Пример плохого кода:

java
class Rectangle {
    public double area() { ... }
}

// При добавлении круга приходится менять код
class AreaCalculator {
    public double calculate(Object shape) {
        if (shape instanceof Rectangle) {
            return ((Rectangle)shape).area();
        }
        // добавление нового if для Circle
    }
}

Хороший вариант:

java
interface Shape {
    double area();
}

class Rectangle implements Shape { ... }
class Circle implements Shape { ... }

class AreaCalculator {
    public double calculate(Shape shape) {
        return shape.area(); // без изменений при добавлении новых фигур
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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