Sobes.tech
Middle

Ochiq/ Yopiq tamoyili nima (OYT)?

sobes.tech AI

AIdan javob

Ochiq/Yopiq Prinsipi (Open/Closed Principle, OCP) SOLID ning besh prinsiplaridan biridir va dasturiy ta'minot ob'ektlari (sinflar, modullar, funksiyalar) kengayishga ochiq, lekin o'zgartirishga yopiq bo'lishi kerakligini ta'kidlaydi.

Bu shuni anglatadiki, tizimning xulq-atvorini mavjud kodni o'zgartirmasdan kengaytirish mumkin, bu esa barqarorlik va xizmat ko'rsatish qulayligini oshiradi.

Masalan, agar yangi funksionallik qo'shish kerak bo'lsa, mavjud kodni o'zgartirmasdan, kerakli interfeysni amalga oshiradigan yoki asosiy sinfdan meros oladigan yangi sinf yaratish yaxshiroqdir.

Swift misoli:

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

// Agar yangi figura turi qo'shilishi kerak bo'lsa, mavjud sinflarni o'zgartirmasdan yangi sinf yaratiladi
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
    }
}

Shunday qilib, kod kengaytirishga ochiq (yangi figuralar uchun), lekin mavjud sinflarni o'zgartirishga yopiq bo'ladi.