Шаблон шаблонного метода является поведенческим шаблоном, который предлагает определить алгоритм более широко в суперклассе. Алгоритм определяется в методе, известном как метод шаблона. Подклассы только определяют реализацию более конкретных алгоритмических шагов.
Преимущество использования этого шаблона проектирования заключается в том, что любые последующие изменения в алгоритме будут влиять только на код в суперклассе. Кроме того, это способствует повторному использованию кода.
В этом кратком руководстве мы научимся реализовывать шаблон метода шаблона в Java.
Шаблон Метод Шаблон:
Допустим, мы должны написать эссе. Обычно есть несколько шагов:
- исследование по теме
- сделать набросок
- написать введение
- Затем подготовьте основную часть эссе
- наконец, закончите с выводом
Итак, давайте продолжим и создадим класс EssayTemplate :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public abstract class EssayTemplate { private String topic; public EssayTemplate(String topic) { this .topic = topic; } public final void writeEssay() { doResearch(); makeOutline(); writeIntro(); writeBody(); writeConclusion(); } void doResearch() { System.out.println( "Researching" ); } void makeOutline() { System.out.println( "Making an outline" ); } void writeIntro() { System.out.println( "Introducing topic" ); } void writeConclusion() { System.out.println( "Concluding topic" );} abstract writeBody(); } |
Большинство общих этапов, включая исследование, создание набросков, написание введения и заключение, останутся прежними, независимо от типа эссе — короткого или длинного. Таким образом, эти определения методов присутствуют в самом суперклассе.
Также обратите внимание, что мы пометили наш метод шаблона как окончательный, чтобы избежать его переопределения любым из подклассов.
Использование класса шаблона:
Основное содержание или содержание эссе зависит от характера эссе. Итак, мы оставили определение метода writeBody () для подклассов.
Давайте теперь создадим два подкласса EssayTemplate — ShortEssay и LongEssay :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class ShortEssay extends EssayTemplate { public ShortEssay(String topic) { super (topic); } @Override public void writeBody() { System.out.println( "Adding 2 paras" ); } } public class LongEssay extends EssayTemplate { public LongEssay(String topic) { super (topic); } @Override public void writeBody() { System.out.println( "Adding 6 paras" ); } } |
Диаграмма UML:
Мы можем представить приведенный выше пример реализации шаблона с помощью UML-диаграммы следующим образом:
ShortEssay и LongEssay определяют свои реализации метода writeBody () . Однако метод, определяющий алгоритм вместе с другими распространенными реализациями метода, находится в суперклассе.
Код клиента с использованием шаблона шаблона:
Давайте напишем некоторый клиентский код, чтобы проверить нашу реализацию:
1
2
3
|
//code in main method EssayTemplate shortEssay = new ShortEssay( "Programming - An Art" ); shortEssay.writeEssay(); |
С этим мы получим следующий вывод на нашей консоли:
1
2
3
4
5
|
Researching Making an outline Introducing topic Adding 2 paras Concluding topic |
Вывод:
В этом уроке мы рассмотрели шаблон метода шаблона.
Все неабстрактные методы java.io.InputStream и java.io.OutputStream используют шаблон шаблона .
Опубликовано на Java Code Geeks с разрешения Шубхры Шриваставы, партнера нашей программы JCG . См. Оригинальную статью здесь: Шаблон Метод Шаблон В Java Мнения, высказанные участниками Java Code Geeks, являются их собственными. |