Sobes.tech
Middle

Co je to princip otevřenosti/zavřenosti (POZ)?

sobes.tech AI

Odpověď od AI

Princip otevřenosti/zavřenosti (Open/Closed Principle, OCP) je jedním z pěti principů SOLID a říká, že softwarové entity (třídy, moduly, funkce) by měly být otevřené pro rozšíření, ale uzavřené pro změnu.

To znamená, že chování systému lze rozšířit bez změny stávajícího kódu, což zvyšuje stabilitu a usnadňuje údržbu.

Například, pokud je potřeba přidat novou funkčnost, je lepší vytvořit novou třídu, která implementuje požadované rozhraní nebo dědí ze základní třídy, než měnit již fungující kód.

Příklad v 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
    }
}

// Pokud je potřeba přidat nový typ tvaru, vytvořte novou třídu bez změny stávajících
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
    }
}

Tím je kód otevřen pro rozšíření (nové tvary), ale uzavřen pro změnu stávajících tříd.