Sobes.tech
Middle

Mi az nyitvatartási/zárási elv (POP)?

sobes.tech MI

Válasz az MI-től

A Nyitott/Zárt Elv (Open/Closed Principle, OCP) a SOLID öt alapelve közé tartozik, és kimondja, hogy a szoftver entitásoknak (osztályok, modulok, függvények) nyitottnak kell lenniük a bővítésre, de zártnak a módosításra.

Ez azt jelenti, hogy a rendszer viselkedése bővíthető anélkül, hogy a meglévő kódot módosítanánk, ezáltal növelve a stabilitást és a karbantarthatóságot.

Például, ha új funkciót kell hozzáadni, jobb új osztályt létrehozni, amely megvalósítja a szükséges interfészt vagy öröklődik az alap osztályból, ahelyett, hogy módosítanánk a már működő kódot.

Swift példával:

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
    }
}

// Ha új alakzat típust kell hozzáadni, hozz létre egy új osztályt anélkül, hogy módosítanád a meglévőket
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
    }
}

Így a kód nyitott a bővítésre (új alakzatok), de zárt a meglévő osztályok módosítására.