W metodzie szablonowej tego wzorca projektowego jeden lub więcej kroków algorytmu może zostać zastąpionych przez podklasy, aby umożliwić różne zachowania, zapewniając jednocześnie, że nadrzędny algorytm jest nadal przestrzegany (Wiki).
Nazwa wzorca Metoda szablonowa oznacza, czym jest. Powiedzmy, że mamy metodę CalculateSomething () i chcemy utworzyć szablon tej metody. Ta metoda zostanie zadeklarowana w klasie bazowej jako metoda niewirtualna. Powiedz, że metoda wygląda następująco.
CalculateSomething(){
int i = 0;
i = Step1(i);
i++;
if (i> 10) i = 5;
i = Step2(i);
return i;
} Implementacje metod Step1 i Step2 mogą być podane przez klasy pochodne.
We wzorcu strategii nie ma implementacji dostarczonej przez bazę (jest to powód, dla którego podstawa jest tak naprawdę interfejsem w diagramie klas)
Klasycznym przykładem jest sortowanie. Na podstawie liczby obiektów, które należy posortować, tworzona jest odpowiednia klasa algorytmu (merge, bubble, quick itp.), A cały algorytm jest hermetyzowany w każdej klasie.
Czy możemy teraz zaimplementować sortowanie jako metodę szablonową? Z pewnością możesz, ale nie znajdziesz zbyt wielu / żadnych wspólnych elementów do wyodrębnienia i umieszczenia w podstawowej implementacji. Więc to niweczy cel wzorca metody szablonowej.