Ответ
Принцип разделения интерфейсов (Interface Segregation Principle, ISP) — один из принципов SOLID, который гласит: «Клиенты не должны зависеть от интерфейсов, которые они не используют».
Суть принципа: Вместо одного «толстого» интерфейса с множеством методов следует создавать несколько узкоспециализированных интерфейсов. Это избавляет классы от необходимости реализовывать ненужную функциональность.
Проблема (нарушение ISP):
interface Worker {
void code();
void test();
void deploy();
void cook(); // Метод, не относящийся к программисту
}
class Programmer implements Worker {
public void code() { /* ... */ }
public void test() { /* ... */ }
public void deploy() { /* ... */ }
public void cook() { /* Пустая реализация или исключение */ }
}
Решение (следование ISP):
interface Coder {
void code();
}
interface Tester {
void test();
}
interface DevOps {
void deploy();
}
interface Chef {
void cook();
}
class Programmer implements Coder, Tester {
public void code() { /* ... */ }
public void test() { /* ... */ }
// Не реализует ненужные интерфейсы
}
Преимущества:
- Уменьшение связанности.
- Избегание «пустых» реализаций или выброса исключений в неиспользуемых методах.
- Более гибкая и понятная архитектура.