Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ ინტერფეისების განყოფილების პრინციპი ობიექტზე ორიენტირებულ პროგრამირებაში?

sobes.tech AI

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

ინტერფეისების განყოფილების პრინციპი (Interface Segregation Principle, ISP) ამბობს, რომ უკეთესია შექმნათ რამდენიმე სპეციალიზებული ინტერფეისი, ვიდრე ერთი უნივერსალური. მომხმარებლები არ უნდა იყვნენ დამოკიდებული მეთოდებზე, რომლებიც ისინი არ იყენებენ.

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

მაგალითად, iOS-ზე შეგიძლიათ ინტერფეისი გაყოფა ქსელის და მონაცემთა ბაზის სამუშაოებისთვის:

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

class DataManager: NetworkService, DatabaseService {
    func fetchData() {
        // მონაცემების ჩატვირთვის განხორციელება
    }
    
    func saveData() {
        // მონაცემების შენახვის განხორციელება
    }
}

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