ConstructiCat Logo
CodeBust.
Browse section ▾

Извлечение интерфейса.

Problem

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

Solution

Выделите эту общую часть в свой собственный интерфейс.

##Example

До
Extract Interface - Before
После
Extract Interface - After

##Why Refactor

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

  2. Ещё один удобный случай возникает, когда требуется описать операции, которые класс выполняет на своём сервере. Если в будущем предполагается разрешить использование серверов нескольких видов, все они должны реализовывать этот интерфейс.

##How to Refactor

  1. Создайте пустой интерфейс.

  2. Объявите общие операции в интерфейсе.

  3. Объявите нужные классы как реализующие этот интерфейс.

  4. Измените объявление типов в клиентском коде так, чтобы они использовали новый интерфейс.