Також відомий як Extract Interface

Рефакторинг Відокремлення інтерфейсу

Проблема

Декілька клієнтів користуються однією і тією ж частиною інтерфейсу класу. Або в двох класах частина інтерфейсу виявилася спільною.

Рішення

Виділіть цю спільну частину в свій власний інтерфейс.
До
Extract Interface - Before
Після
Extract Interface - After

Причини рефакторингу

  1. Інтерфейси бувають корисні, коли один клас може відігрувати різноманітні ролі в залежності від ситуації. Використайте відокремлення інтерфейсу щоб явно позначити кожну з ролей.

  2. Ще одна слушна нагода виникає, коли потрібно описати операції, які клас виконує на своєму сервері. Якщо в майбутньому передбачається дозволити використання серверів декількох видів, усі вони повинні реалізовувати цей інтерфейс.

Корисні факти

Є деяка схожість між відокремленням суперкласу і відокремленням інтерфейсу.

Відокремлення інтерфейсу дозволяє виділяти тільки спільні інтерфейси, але не спільний код. Іншими словами, якщо в класах знаходиться дублюючий код, то, застосувавши відокремлення інтерфейсу, ви ніяк не позбавитеся від цього дублювання.

Проте, цю проблему можна зменшити, застосувавши відокремлення класу для розміщення поведінки, що містить дублювання, в окремий компонент і делегування йому усієї роботи. У випадку, якщо об'єм спільної поведінки виявиться досить великим, завжди можна застосувати відокремлення суперкласу. Звичайно, це навіть простіше, але пам'ятайте, що при цьому ви отримуєте тільки один батьківський клас.

Порядок рефакторингу

  1. Створіть порожній інтерфейс.

  2. Оголосіть спільні операції в інтерфейсі.

  3. Оголосіть потрібні класи, які будуть реалізовуюти цей інтерфейс.

  4. Змініть оголошення типів в клієнтському коді так, щоб вони використовували новий інтерфейс.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.