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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

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

protocol NetworkService {
    func fetchData()
}

protocol DatabaseService {
    func saveData()
}

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

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее