Лучше создавать несколько специализированных интерфейсов, чем один универсальный интерфейс, который вынуждает реализовать ненужные методы. Каждый интерфейс должен описывать только те действия, которые будут использоваться конкретным клиентом.

  • Пример нарушения ISP: Один интерфейс заставляет классы реализовывать методы, которые они не используют.
  • Решение: Разделить интерфейс на несколько специализированных.
public interface Worker {
    void work();
    void eat();
}
 
public class RobotWorker implements Worker {
    public void work() {
        // Робот работает
    }
    
    public void eat() {
        // Робот не ест — нарушение ISP
    }
}

Можно разделить интерфейсы:

public interface Worker {
    void work();
}
 
public interface Eater {
    void eat();
}

Мета информация

Область:: 00 Архитектура ПО
Родитель:: SOLID
Источник::
Создана:: 2024-09-27
Автор::

Дополнительные материалы

Дочерние заметки