digital-garden/dev/architecture/Interface Segregation Principle.md
Struchkov Mark 1536a6c68c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-09-27 20:25:32 +03:00

1.8 KiB

aliases tags date zero-link parents linked
ISP
maturity/🌱
2024-09-27
../../meta/zero/00 Архитектура ПО
SOLID

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

  • Пример нарушения 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();
}

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

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

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

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