Извлечение интерфейса.
Несколько клиентов пользуются одной и той же частью интерфейса класса. Либо в двух классах часть интерфейса оказалась общей.
Выделите эту общую часть в свой собственный интерфейс.
##Example


##Why Refactor
-
Интерфейсы бывают кстати, когда один и тот же класс может отыгрывать различные роли в различных ситуациях. Используйте извлечение интерфейса, чтобы явно обозначить каждую из ролей.
-
Ещё один удобный случай возникает, когда требуется описать операции, которые класс выполняет на своём сервере. Если в будущем предполагается разрешить использование серверов нескольких видов, все они должны реализовывать этот интерфейс.
##How to Refactor
-
Создайте пустой интерфейс.
-
Объявите общие операции в интерфейсе.
-
Объявите нужные классы как реализующие этот интерфейс.
-
Измените объявление типов в клиентском коде так, чтобы они использовали новый интерфейс.