Описание тега interface-segregation-principle

По вопросам о принципах разделения интерфейсов (ISP) в объектно-ориентированном дизайне, одном из принципов SOLID, перечисленных Робертом К. Мартином. В нем говорится, что "клиентов не следует заставлять зависеть от интерфейсов, которые они не используют".

Роберт Мартин представил принцип разделения интерфейса в 1996 году. Он направлен на то, чтобы избежать связи между различными клиентами интерфейса.

Когда клиенты вынуждены полагаться на интерфейсы, которые они не используют, эти клиенты могут быть изменены в этих интерфейсах. Это приводит к непреднамеренному соединению между всеми клиентами. Иначе говоря, когда клиент зависит от класса, который содержит интерфейсы, которые клиент не использует, но что другие клиенты делают использование, то, что клиент будет зависеть от изменений, что эти другие клиенты силы на класс. Мы хотели бы избежать таких связей, где это возможно, и поэтому мы хотим разделить интерфейсы, где это возможно.

Мартин предложил шаблон адаптера как решение для разделения интерфейсов.

Используя шаблон ADAPTER, либо посредством делегирования (объектная форма), либо посредством множественного наследования (форма класса), толстые интерфейсы могут быть разделены на абстрактные базовые классы, которые нарушают нежелательную связь между клиентами.

Позже Мартин включил ISP в качестве четвертого из своих твердых принципов.

См. Статью ISP в разделе Принципы OOD.