Junior — Middle
Czy mógłbyś wyjaśnić zasadę segregacji interfejsów w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
Zasada segregacji interfejsów (Interface Segregation Principle, ISP) mówi, że lepiej tworzyć kilka wyspecjalizowanych interfejsów, niż jeden uniwersalny. Klienci nie powinni zależeć od metod, których nie używają.
W praktyce oznacza to, że jeśli masz interfejs z wieloma metodami, a różne klasy korzystają tylko z części z nich, warto podzielić interfejs na kilka węższych. To zwiększa elastyczność i ułatwia utrzymanie kodu.
Na przykład w iOS można podzielić interfejs do pracy z siecią i bazą danych:
protocol NetworkService {
func fetchData()
}
protocol DatabaseService {
func saveData()
}
class DataManager: NetworkService, DatabaseService {
func fetchData() {
// implementacja pobierania danych
}
func saveData() {
// implementacja zapisywania danych
}
}
Tak więc, jeśli klasa korzysta tylko z funkcji sieciowych, może zależeć tylko od NetworkService, nie znając metod zapisywania danych.