Sobes.tech
Назад к вопросам
Middle
152

Что такое принцип открытости/закрытости (ПОП)?

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

sobes.tech AI

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

Это означает, что поведение системы можно расширять без изменения уже существующего кода, что повышает устойчивость и удобство сопровождения.

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

Пример на Swift:

protocol Shape {
    func area() -> Double
}

class Circle: Shape {
    var radius: Double
    init(radius: Double) {
        self.radius = radius
    }
    func area() -> Double {
        return Double.pi * radius * radius
    }
}

class Rectangle: Shape {
    var width: Double
    var height: Double
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
    func area() -> Double {
        return width * height
    }
}

// Если нужно добавить новый тип фигуры, создаём новый класс, не меняя существующие
class Triangle: Shape {
    var base: Double
    var height: Double
    init(base: Double, height: Double) {
        self.base = base
        self.height = height
    }
    func area() -> Double {
        return 0.5 * base * height
    }
}

Таким образом, код открыт для расширения (новые фигуры), но закрыт для изменения существующих классов.