Статьи

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

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

Преимущество использования этого шаблона проектирования заключается в том, что любые последующие изменения в алгоритме будут влиять только на код в суперклассе. Кроме того, это способствует повторному использованию кода.

В этом кратком руководстве мы научимся реализовывать шаблон метода шаблона в 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 () для подклассов.

Давайте теперь создадим два подкласса EssayTemplateShortEssay и 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, являются их собственными.