Back to questions
Яндекс
Junior — Middle
75
Могли бы вы объяснить принцип разделения интерфейсов в объектно-ориентированном программировании?
Companies where asked
Леди и джентельмен сити
Answer from AI
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, не зная о методах сохранения данных.