Sobes.tech
Junior
116
questionbank

Что означает буква 'О' в принципах SOLID?

Ответ от нейросети

sobes.tech AI

Буква 'О' в принципах SOLID означает Open/Closed Principle (Принцип Открытости/Закрытости).

Формулируется как: программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для модификации.

Это означает, что:

  • Новое поведение может быть добавлено путем расширения существующих классов, например, через наследование или композицию.
  • Существующий код не должен изменяться для добавления нового поведения. Изменение существующего кода увеличивает риск внесения ошибок в уже работающие части системы.

Пример:

Без соблюдения OCP:

class Shape {
    String type;

    public Shape(String type) {
        this.type = type;
    }
}

class AreaCalculator {
    public double calculateArea(Shape shape) {
        if (shape.type.equals("circle")) {
            // вычисление площади круга
            return 0; // заглушка
        } else if (shape.type.equals("rectangle")) {
            // вычисление площади прямоугольника
            return 0; // заглушка
        }
        // Добавление нового типа фигуры потребует изменения этого метода
        return 0;
    }
}

С соблюдением OCP:

interface Shape {
    double calculateArea();
}

class Circle implements Shape {
    // поля и конструктор
    @Override
    public double calculateArea() {
        // вычисление площади круга
        return 0; // заглушка
    }
}

class Rectangle implements Shape {
    // поля и конструктор
    @Override
    public double calculateArea() {
        // вычисление площади прямоугольника
        return 0; // заглушка
    }
}

class AreaCalculator {
    public double calculateArea(Shape shape) {
        // Метод закрыт для модификации.
        // Добавление нового типа фигуры (реализующего Shape) не потребует изменения этого метода.
        return shape.calculateArea();
    }
}