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)
}
ამგვარად, თუ გსურთ ახალი შეტყობინების გაგზავნის მეთოდის დამატება, სისტემას ვრცელდებით ახალი კლასების შექმნით, არსებული კოდის შეცვლის გარეშე.