Назад к вопросам
Middle+
70
questionbank
Расскажите о принципе разделения интерфейсов (Interface Segregation Principle).
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Принцип разделения интерфейсов (ISP) гласит: клиенты не должны зависеть от интерфейсов, которые они не используют.
Это означает, что вместо создания одного большого интерфейса с множеством методов, лучше создать несколько более мелких и специализированных интерфейсов. Каждый клиент должен реализовывать только те интерфейсы, которые ему действительно необходимы.
Преимущества следования ISP:
- Снижение связанности: Изменения в одном методе большого интерфейса не затрагивают клиентов, которые не используют этот метод.
- Более гибкий код: Легче добавлять новые реализации, так как они обязаны реализовывать только нужные интерфейсы.
- Улучшенная читаемость: Код становится понятнее, когда интерфейсы четко определяют конкретные обязанности.
Пример:
Вместо:
interface Worker {
void work();
void eat();
void sleep();
}
Лучше:
interface Workable {
void work();
}
interface Eatable {
void eat();
}
interface Sleepable {
void sleep();
}
Тогда класс HumanWorker может реализовать все три:
class HumanWorker implements Workable, Eatable, Sleepable {
@Override
public void work() {
// ...
}
@Override
public void eat() {
// ...
}
@Override
public void sleep() {
// ...
}
}
А какой-нибудь RobotWorker только Workable:
class RobotWorker implements Workable {
@Override
public void work() {
// ...
}
}