Metoda szablonowa to behawioralny wzorzec projektowy, który służy do określenia szkieletu algorytmu w klasie bazowej i pozostawienia wybranych kroków do zaimplementowania lub zmodyfikowania w klasach pochodnych.
Najważniejsza idea: klasa bazowa definiuje kolejność działań, a podklasy dostarczają szczegóły wykonania.
Kiedy stosować?
Wzorzec stosuje się, gdy kilka klas wykonuje podobny algorytm, ale różnią się niektórymi krokami. Dzięki temu unika się duplikacji kodu i zachowuje wspólną strukturę działania.
Przykłady zastosowań:
- generowanie raportów w różnych formatach,
- przetwarzanie plików różnego typu,
- obsługa procesu logowania z różnymi metodami uwierzytelniania,
- przygotowanie dokumentu według stałej procedury.
Przykład w Javie
abstract class Raport {
public final void generuj() {
pobierzDane();
przetworzDane();
zapiszRaport();
}
protected abstract void pobierzDane();
protected abstract void przetworzDane();
protected void zapiszRaport() {
System.out.println("Zapis raportu");
}
}
class RaportPDF extends Raport {
protected void pobierzDane() {
System.out.println("Pobieranie danych dla PDF");
}
protected void przetworzDane() {
System.out.println("Przetwarzanie danych do PDF");
}
}
Metoda generuj() jest metodą szablonową — ustala kolejność kroków. Podklasa RaportPDF implementuje szczegóły.
Ważne na egzaminie
Metoda szablonowa nie służy do tworzenia struktur drzewiastych ani do przechowywania kolekcji obiektów. Jej celem jest zdefiniowanie ogólnego przebiegu algorytmu i przekazanie szczegółów implementacji podklasom.