Sobes.tech
Junior — Middle

შეგიძლიათ მიაწოდოთ მაგალითი, თუ როგორ განახორციელოთ SOLID-ის პრინციპებიდან გახსნილობის/დახურვის პრინციპი პრაქტიკაში?

sobes.tech AI

პასუხი AI-სგან

მოწყობილობის ღია/დახურული პრინციპი ამბობს, რომ პროგრამული ობიექტები უნდა იყოს ღია გაფართოებისთვის, მაგრამ დახურული ცვლილებისთვის.

Android-ის განვითარებაში, ეს შეიძლება განხორციელდეს, მაგალითად, აბსტრაქციებისა და მემკვიდრეობის გამოყენებით. ნაცვლად იმისა, რომ შეცვალოთ არსებული კლასი, ვქმნით ახალ კლასს, რომელიც გაფართოებს ფუნქციონალობას.

მაგალითი:

// ძირითადი ინტერფეისი
interface NotificationSender {
    fun send(message: String)
}

// იმეილის გაგზავნის რეალიზაცია
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // იმეილის გაგზავნის ლოგიკა
    }
}

// მოგვიანებით, საჭიროა SMS-ის გაგზავნის დამატება, EmailSender-ის შეცვლის გარეშე, ვამატებთ ახალ კლასს
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // SMS-ის გაგზავნის ლოგიკა
    }
}

// გამოყენება
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

ამგვარად, თუ გსურთ ახალი შეტყობინების გაგზავნის მეთოდის დამატება, სისტემას ვრცელდებით ახალი კლასების შექმნით, არსებული კოდის შეცვლის გარეშე.