Sobes.tech
Назад к вопросам
Junior — Middle
76

Могли бы вы объяснить принцип разделения интерфейсов в объектно-ориентированном программировании?

Компании, где спрашивали
ЯндексЯндекс
Леди и джентельмен сити

Ответ от нейросети

sobes.tech AI

Принцип разделения интерфейсов (Interface Segregation Principle, ISP) говорит, что лучше создавать несколько специализированных интерфейсов, чем один универсальный. Клиенты не должны зависеть от методов, которые они не используют.

На практике это означает, что если у вас есть интерфейс с множеством методов, и разные классы используют только часть из них, стоит разбить интерфейс на несколько более узких. Это повышает гибкость и облегчает поддержку кода.

Например, в iOS можно разделить интерфейс для работы с сетью и с базой данных:

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

class DataManager: NetworkService, DatabaseService {
    func fetchData() {
        // реализация загрузки данных
    }
    
    func saveData() {
        // реализация сохранения данных
    }
}

Так, если класс использует только сетевые функции, он может зависеть только от NetworkService, не зная о методах сохранения данных.