--- aliases: - ISP tags: - maturity/🌱 date: 2024-09-27 zero-link: - "[[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]" parents: - "[[SOLID|SOLID]]" linked: --- Лучше создавать несколько специализированных интерфейсов, чем один универсальный интерфейс, который вынуждает реализовать ненужные методы. Каждый интерфейс должен описывать только те действия, которые будут использоваться конкретным клиентом. - **Пример нарушения ISP**: Один интерфейс заставляет классы реализовывать методы, которые они не используют. - **Решение**: Разделить интерфейс на несколько специализированных. ```java public interface Worker { void work(); void eat(); } public class RobotWorker implements Worker { public void work() { // Робот работает } public void eat() { // Робот не ест — нарушение ISP } } ``` Можно разделить интерфейсы: ```java public interface Worker { void work(); } public interface Eater { void eat(); } ``` *** ## Мета информация **Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]] **Родитель**:: [[SOLID]] **Источник**:: **Создана**:: [[2024-09-27]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки