Идея паттерна Шаблонный метод (Template method)

Паттерн проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых поведенческих паттернов — Шаблонный метод (Template method).

Как я уже писал ранее, существует три вида паттернов проектирования:

  • Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
  • Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
  • Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.

Шаблонный метод (Template method) — это поведенческий паттерн, который позволяет определить каркас алгоритма, обособившись от конкретной реализации всех или некоторых шагов, позволяя делать это подклассам, при этом не нарушая структурной целостности алгоритма. То есть, Шаблонный метод задет основу алгоритма и позволяет наследникам вносить поправки, не меняя алгоритм в целом.

Архитектура шаблона Template method

Шаблонный метод

  • AbstractClass — определяет невиртуальный метод TemplateMethod, который вызывает внутри примитивные операции PrimitiveOperation1(), PrimitiveOperation2()
  • ConcreteClass — реализует примитивные шаги алгоритма.

Логика работы паттерна Шаблонный метод

Рассмотрим основную логику работы паттерна Шаблонный метод. В базовом классе определен метод, например пусть это будет приготовления пирога. Он определяет последовательность действий замешать тесто, добавить начинку, приготовить в духовке. Данная последовательность будет идентичной для всех пирогов, а вот конкретные реализации для яблочного и мясного пирога будут кардинально отличаться на всех этапах приготовления. Таким образом шаблонный метод задает последовательность определенных действий, а наследники реализуют эти действия в соответствии со своими требованиями и особенностями.

Реализация паттерна проектирования шаблонный метод на языке C#

Теперь переходим к реализации данного паттерна. Для начала определим базовый класс. В нем реализуем один шаблонный метод Cook, который определяет последовательность действий

  1. Приготовить тесто
  2. Приготовить начинку
  3. Запечь в духовке

Последовательность этих действий будет одинакова для любого пирога. А также определим сами методы-этапы приготовления не реализуя их.

Теперь создадим два класса наследника, которые уже будут конкретно реализовывать этапы приготовления.

Ну и наконец создадим экземпляры этих классов и проверим их работу. Обратите внимание, что при обращении к конкретным экземплярам класса не обращаемся к этапам приготовления, мы просто вызываем наш шаблонный метод.

В результате получаем следующий результат

Исходный код приложения можно скачать из репозитория github https://github.com/shwanoff/TemplateMethod

Также рекомендую изучить паттерн Паттерн Стратегия (Strategy)

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.

Вконтакте
Telegram
Facebook
Twitter
Одноклассники
Дзен
Google+

 
×
%d такие блоггеры, как: