Skip to content

Template Method

Pandas edited this page Jun 20, 2017 · 1 revision

Назначение

Шаблонный метод определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом.

Применимость

Паттерн шаблонный метод следует использовать:

  • Чтобы однократно использовать инвариантные части алгоритма, оставляя реализацию изменяющегося поведения на усмотрение подклассов;
  • Когда нужно вычленить и локализовать в одном классе поведение, общее для всех подклассов, дабы избежать дублирования кода.
  • Для управления расширениями подклассов. Можно определить шаблонный метод так, что он будет вызывать операции-зацепки в определенных точках, разрешив тем самым расширение только в этих точках.

Структура

Imgur

Участники

  • AbstractClass (Application) - абстрактный класс: определяет абстрактные примитивные операции, замещаемые в конкретных подклассах для реализации шагов алгоритма; реализует шаблонный метод, определяющий скелет алгоритма. Шаблонный метод вызывает примитивные операции, а также операции, определенные в классе AbstractClass или в других объектах;
  • ConcreteClass (MyApplication) - конкретный класс: реализует примитивные операции, выполняющие шаги алгоритма способом, который зависит от подкласса.

Результаты

Шаблонные методы вызывают операции следующих видов:

  • конкретные операции(либо из класса ConcreteClass,либо из классов клиента);
  • конкретные операции из класса AbstractClass (то есть операции, полезные всем подклассам);
  • примитивные операции (то есть абстрактные операции);
  • фабричные методы (см. паттерн фабричный метод);
  • операции зацепки(hookoperations),реализующиеповедениепоумолчанию, которое может быть расширено в подклассах. Часто такая операция по умолчанию не делает ничего.

Clone this wiki locally