Також відомий як Form Template Method

Рефакторинг Створення шаблонного методу

Проблема

В підкласах реалізовані алгоритми, що містять схожі кроки і однаковий порядок виконання цих кроків.

Рішення

Винесіть структуру алгоритму і однакові кроки в суперклас, а в підкласах залиште реалізацію кроків, що відрізняються.
До
Form Template Method - Before
Після
Form Template Method - After

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

Підкласи розвиваються паралельно. Íноді з ними працюють різні люди, що призводить до дублювання коду і помилок, а також до ускладнення підтримки, оскільки кожну зміну доводиться проводити в усіх підкласах.

Переваги

  • Коли ми говоримо про дублювання коду, не завжди мається на увазі програмування методом копіювання-вставки. Часто дублювання виникає на абстрактнішому рівні. Наприклад, у вас є метод сортування чисел і метод сортування колекції об'єктів, при цьому, єдине, чим вони відрізняються це порівняння елементів. Створення шаблонного методу дозволяє впоратися з таким дублюванням, об'єднавши спільні кроки алгоритму в суперкласі і залишивши відмінності для підкласів.

  • Створення шаблонного методу реалізує принцип відкритості/закритості. Під час реалізації нової версії алгоритму вам треба буде усього лише створити новий підклас, не міняючи існуючий код.

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

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

  2. Методи, що вийшли однаковимі для усіх підкласів, можете сміливо переміщати в суперклас, використовуючи підйом методу.

  3. Методи, що відрізняються, приведіть до єдиних назв за допомогою перейменування методу.

  4. Помістіть сигнатури методів, що відрізняються, в суперклас як абстрактні за допомогою підйому методу. Їх реалізації залиште в підкласах.

  5. І, нарешті, підніміть основний метод алгоритму в суперклас. Він тепер повинен працювати з методами-кроками, описаними в суперкласі — реальними або абстрактними.

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

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

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

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

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

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

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

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