Sobes.tech
Junior — Middle

Ar galėtumėte paaiškinti sąsajų atskyrimo principą objektinio programavimo srityje?

sobes.tech AI

Atsakymas iš AI

Interfeisų atskyrimo principas (Interface Segregation Principle, ISP) teigia, kad geriau kurti keletą specializuotų interfeisų, o ne vieną bendrą. Klientai neturėtų priklausyti nuo metodų, kurių jie nenaudoja.

Praktikoje tai reiškia, kad jei turite interfeisą su daugybe metodų ir skirtingos klasės naudoja tik dalį jų, reikėtų jį suskirstyti į keletą siauresnių. Tai padidina lankstumą ir palengvina kodo priežiūrą.

Pavyzdžiui, iOS galima atskirti interfeisą darbui su tinklu ir duomenų baze:

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

class DataManager: NetworkService, DatabaseService {
    func fetchData() {
        // duomenų įkėlimo įgyvendinimas
    }
    
    func saveData() {
        // duomenų išsaugojimo įgyvendinimas
    }
}

Taip, jei klasė naudoja tik tinklo funkcijas, ji gali priklausyti tik nuo NetworkService, nežinodama duomenų išsaugojimo metodų.