Sobes.tech
Middle

Қоидаи кушодан/банд кардани (ПОП) чист?

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

Осылайша, код кеңейтуге ашық (жаңа фигуралар), бірақ өзгертуге жабық (барлық сыныптар үшін).