Шаблонний метод () — шаблон проєктування, належить до класу шаблонів поведінки.
Призначення
Визначає алгоритму та дозволяє підкласам перевизначити деякі кроки алгоритму, не змінюючи структуру в цілому.
Застосовність
Слід використовувати шаблон Шаблонний метод коли: треба одноразово використати інваріантні частини алгоритму, залишаючи реалізацію поведінки, що змінюється, на розсуд підкласів; треба відокремити та локалізувати в одному класі поведінку, що є загальною для усіх підкласів, щоб запобігти дублювання коду. Це хороший приклад техніки «винесення за лапки з метою узагальнення», що описана в роботі Вільяма Опдайка () та Ральфа Джонсона () [JO93,OJ93]. Спочатку ідентифікуються відмінності в існуючому коді, а потім вони виносяться у окремі операції. У кінцевому підсумку відмінні фрагменти коду замінюються шаблонним методом, з котрого викликаються нові операції; для управління розширеннями підкласів. Можна визначити шаблонний метод таким чином, що він буде викликати операції-зачіпки у означених точках, дозволивши тим самим розширення тільки у цих точках.
Структура
AbstractClass — абстрактний клас: визначає абстрактні примітивні операції, що заміщуються у конкретних підкласах для реалізації кроків алгоритму; реалізує шаблонний метод, що визначає скелет алгоритму. Шаблонний метод викликає примітивні операції, а також операції, означенні у класі AbstractClass, чи в інших об'єктах; ConcreteClass — конкретний клас: реалізує примітивні операції, що виконують кроки алгоритму у спосіб, котрий залежить від підкласу;
Взаємини ConcreteClass припускає, що інваріантні кроки алгоритму будуть виконані у AbstractClass.
Переваги та недоліки
Переваги Немає копіювання коду. Лише кілька методів потрібно перевизначити. Гнучкість дозволяє підкласам вирішити, як здійснювати кроки в алгоритмі.
Недоліки Налагодження та розуміння послідовності алгоритму може іноді бути складною. Підтримка структури шаблонів може бути проблемою, оскільки зміни на будь-якому рівні (низький рівень або високий рівень) можуть перешкоджати реалізації.
Зв'язок з іншими патернами Шаблонний метод задає кроки алгоритму, які реалізовують підкласи. Стратегія задає алгоритм який можна виконати декількома способами, до того ж вибрати ці способи на етапі виконання програми
Реалізація
C++
C#
Джерела