Sobes.tech
Junior — Middle

Mohl byste vysvětlit princip oddělení rozhraní v objektově orientovaném programování?

sobes.tech AI

Odpověď od AI

Princip principu oddělení rozhraní (Interface Segregation Principle, ISP) říká, že je lepší vytvářet několik specializovaných rozhraní než jedno univerzální. Klienti by neměli záviset na metodách, které nepoužívají.

V praxi to znamená, že pokud máte rozhraní s mnoha metodami a různé třídy používají pouze část z nich, je vhodné rozhraní rozdělit na několik užších. To zvyšuje flexibilitu a usnadňuje údržbu kódu.

Například v iOS lze rozdělit rozhraní pro práci se sítí a s databází:

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

class DataManager: NetworkService, DatabaseService {
    func fetchData() {
        // implementace načítání dat
    }
    
    func saveData() {
        // implementace ukládání dat
    }
}

Takže pokud třída používá pouze síťové funkce, může záviset pouze na NetworkService, aniž by znala metody ukládání dat.