-
Notifications
You must be signed in to change notification settings - Fork 3
Template Method
Pandas edited this page Jun 20, 2017
·
1 revision
Шаблонный метод определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом.
Паттерн шаблонный метод следует использовать:
- Чтобы однократно использовать инвариантные части алгоритма, оставляя реализацию изменяющегося поведения на усмотрение подклассов;
- Когда нужно вычленить и локализовать в одном классе поведение, общее для всех подклассов, дабы избежать дублирования кода.
- Для управления расширениями подклассов. Можно определить шаблонный метод так, что он будет вызывать операции-зацепки в определенных точках, разрешив тем самым расширение только в этих точках.
- AbstractClass (Application) - абстрактный класс: определяет абстрактные примитивные операции, замещаемые в конкретных подклассах для реализации шагов алгоритма; реализует шаблонный метод, определяющий скелет алгоритма. Шаблонный метод вызывает примитивные операции, а также операции, определенные в классе AbstractClass или в других объектах;
- ConcreteClass (MyApplication) - конкретный класс: реализует примитивные операции, выполняющие шаги алгоритма способом, который зависит от подкласса.
Шаблонные методы вызывают операции следующих видов:
- конкретные операции(либо из класса ConcreteClass,либо из классов клиента);
- конкретные операции из класса AbstractClass (то есть операции, полезные всем подклассам);
- примитивные операции (то есть абстрактные операции);
- фабричные методы (см. паттерн фабричный метод);
- операции зацепки(hookoperations),реализующиеповедениепоумолчанию, которое может быть расширено в подклассах. Часто такая операция по умолчанию не делает ничего.
