Sobes.tech
Junior — Middle

Potresti spiegare il principio di segregazione delle interfacce nella programmazione orientata agli oggetti?

sobes.tech AI

Risposta dell'AI

Il Principio di Segregazione delle Interfacce (ISP) afferma che è meglio creare più interfacce specializzate piuttosto che una sola interfaccia universale. I clienti non dovrebbero dipendere da metodi che non utilizzano.

In pratica, se hai un'interfaccia con molti metodi e classi diverse usano solo una parte di essi, è consigliabile suddividerla in più interfacce più ristrette. Questo aumenta la flessibilità e semplifica la manutenzione del codice.

Ad esempio, su iOS puoi dividere l'interfaccia per lavorare con la rete e con il database:

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

class DataManager: NetworkService, DatabaseService {
    func fetchData() {
        // implementazione del caricamento dati
    }
    
    func saveData() {
        // implementazione del salvataggio dati
    }
}

In questo modo, se una classe utilizza solo funzioni di rete, può dipendere solo da NetworkService, senza conoscere i metodi di salvataggio dei dati.