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ų.