Wzorzec projektowy Template method jest wzorcem z grupy wzorców operacyjnych. Definiuje on za pomocą abstrakcji szkielet algorytmu, który w klasach potomnych jest w pełni realizowany. Na początku tworzona jest kalsa zawierająca ogólne kroki algorytmu zapisane jako metody abstrakcyjne. Klasy potomne nadpisują te abstrakcyjne metody implementując rzeczywiste akcje. Dzięki takiemu podejściu szkielet algorytmu trzymany jest w jednym miejscu, ale jego mniejsze (bardziej specjalistyczne) kroki mogą być zmieniane w podklasach.
Template Method jest wykorzystywany we wzorcach Strategia i Abstract Factory.
Dla przykładu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public abstract class Generalizacja { public void wykonajAlogrytm() { krok1(); krok2(); krok3(); krok4(); } protected void krok1() { System.out.println("Wykonuję krok 1..."); } protected abstract void krok2(); protected abstract void krok3(); protected void krok4() { System.out.println("Wykonuję krok 4..."); } } public class Specjalizacja extends Generalizacja{ protected void krok2() { System.out.println("Krok 2 specjalizacji..."); } protected void krok3() { System.out.println("Krok 3 specjalizacji..."); } } public class Realizacja { public static void main(String[] args) { Generalizacja generalizacja = new Specjalizacja(); generalizacja.wykonajAlogrytm(); } } |
Diagram wzorca: