У шаблонній методиці цього шаблону проектування один або кілька кроків алгоритму можуть бути замінені підкласами, щоб дозволити різну поведінку, забезпечивши, щоб всебічний алгоритм все ще виконувався (Wiki).
Метод шаблону назви шаблону означає, що це таке. Скажімо, у нас є метод CalculateSomething (), і ми хочемо шаблонувати цей метод. Цей метод буде оголошено в базовому класі невіртуальним методом. Скажімо, метод виглядає приблизно так.
CalculateSomething(){
int i = 0;
i = Step1(i);
i++;
if (i> 10) i = 5;
i = Step2(i);
return i;
} Реалізація методів Step1 та Step2 може бути задана похідними класами.
У стратегічному шаблоні відсутня реалізація, що надається базою (це причина, чому база дійсно є інтерфейсом на діаграмі класів)
Класичний приклад - сортування. Виходячи з кількості об'єктів, необхідно сортувати відповідний клас алгоритму (злиття, міхур, швидкий і т.д.), і весь алгоритм інкапсульований у кожному класі.
Тепер ми можемо реалізувати сортування як метод шаблону? Безумовно, ви можете, але ви не знайдете багато / будь-яке спільне вилучення та розміщення в базовій реалізації. Так воно перемагає призначення шаблону шаблону методу.