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();
}
}