Шаблонный метод — это поведенческий паттерн, задающий скелет алгоритма в суперклассе и заставляющий подклассы реализовать конкретные шаги этого алгоритма.
Давайте разберем пример функционала одноразового пароля (OTP – One Time Password). Он может быть доставлен пользователю разными путями (СМС, электронная почта и т. д.), но независимо от способа доставки, сам процесс OTP один и тот же:
Создать случайное число с n-ым количеством цифр.
Сохранить этот номер в кэш для дальнейшей верификации.
Подготовить содержимое.
Отправить оповещение.
Возможные OTP, которые будут представлены в будущем, скорее всего также будут использовать процедуру выше.
В таком случае шаги конкретной операции одинаковы, но их реализация может отличаться. Такая ситуация подходит для использования паттерна Шаблонный метод.
Сперва мы определим базовый шаблонный алгоритм, который состоит из фиксированного количества методов. Это и будет нашим шаблонным методом. После этого мы реализуем методы для каждого шага, но шаблонный метод при этом трогать не будем.