Sobes.tech
Middle

Какво е принципът на отвореност/затвореност (POP)?

sobes.tech AI

Отговор от 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
    }
}

По този начин, кодът е отворен за разширение (нови фигури), но затворен за промяна на съществуващите класове.