Обзор темы [Рефакторинг кода]

Извлечение интерфейса (Extract Interface)

Несколько клиентов используют одно подмножество методов класса, либо несколько классов имеют одинаковое подмножество методов.

Вынести это подмножество в отдельный интерфейс.

Отдельные интерфейсы используются в JAVA, где они заменяют множественное наследование. При отдельной реализации описывается только спецификация интерфейсов, так что для каждого применения интерфейса нужно заново писать код, что может привести к его дублированию. Взамен можно использовать Извлечение класса либо Извлечение суперкласса.

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