Interface Segregation Principle (ISP) – принцип разделения интерфейса – клиент, реализующий интерфейс, не должен вынуждено зависеть от элементов интерфейса, которые он не использует. Много специализированных интерфейсов лучше, чем один универсальный.
Проблема: не все методы, которые описывает интерфейс нужны в тех классах, которые его имплементируют, поэтому нужно разделить интерфейс на более мелкие, и имплементировать только те, которые необходимы.
=============================================================
задания для практики на ISP:
-
Создайте интерфейс для графического редактора, который будет разделяться на меньшие интерфейсы. Например, интерфейс для рисования фигур, интерфейс для редактирования цвета и интерфейс для работы со слоями. Убедитесь, что каждый из этих интерфейсов содержит только те методы, которые необходимы для выполнения соответствующих задач, и не включает в себя методы, которые могут быть использованы в другом контексте.
-
Разработайте систему управления задачами, которая имеет разные интерфейсы для пользователей разного уровня доступа. Например, интерфейс для администратора, который может добавлять, редактировать и удалять задачи, интерфейс для менеджера, который может просматривать и назначать задачи, и интерфейс для работника, который может только просматривать свои задачи. Убедитесь, что каждый интерфейс содержит только те методы, которые необходимы для выполнения соответствующих задач, и не включает в себя методы, которые могут быть использованы в другом контексте.
-
Разработайте систему для автоматизации управления складом, которая имеет разные интерфейсы для различных складских работников. Например, интерфейс для оператора склада, который может добавлять, редактировать и удалять товары, интерфейс для менеджера склада, который может просматривать и управлять запасами товаров, и интерфейс для сборщика товаров, который может только просматривать и отмечать, что товары были собраны. Убедитесь, что каждый интерфейс содержит только те методы, которые необходимы для выполнения соответствующих задач, и не включает в себя методы, которые могут быть использованы в другом контексте.