Назад к вопросам
Яндекс
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, не зная о методах сохранения данных.