Wzorzec projektowy metoda szablonowa - template method

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3255 razy

Opis wzorca projektowego metoda szablonowa

Wzorzec projektowy metoda szablonowa należy do wzorców czynnościowych. Jego celem jest ukrycie za jednym interfejsem (klasą abstrakcyjną) różnych wersji obsługi danego zadania. Zasadniczo ten wzorzec stosuje się wszędzie tam, gdzie używa się interfejsów.

Przykładowy diagram UML wzorca projektowego metoda szablonowa

Na poniższym diagramie UML klasy NumericList i AlphabeticList dziedziczą po jednym i tym samym interfejsie iNumericList. Celem tychże klas jest dostarczenie odpowiednich metod do wyświetlania listy numerowanej. Pierwsza klasa do numeracji używa liczb arabskich, zaś druga małych liter alfabetu. Dzięki wspólnemu interfejsowi klasy NumericList i AlphabeticList mogą być łatwo przechowywane w jednej tablicy interfejsów.

Przykładowy diagram UML dla wzorca projektowego metoda szablonowa
Rys. 1
Przykładowy diagram UML dla wzorca projektowego metoda szablonowa

Przykładowa implementacja wzorca projektowego metoda szablonowa

#include <iostream> #include <vector> #include <string> class iNumericList{ protected: std::vector<std::string> textList; public: void addListElement(std::string listElement){ textList.push_back(listElement); } virtual void write() const = 0; virtual ~iNumericList(){} }; class NumericList : public iNumericList{ public: virtual void write() const { for(int i = 0; i < textList.size(); i++){ std::cout << i + 1 << ") " << textList[i] << std::endl; } } }; class AlphabeticList : public iNumericList{ public: virtual void write() const { for(int i = 0; i < textList.size(); i++){ std::cout << char(i + 97) << ") " << textList[i] << std::endl; } } }; int main(){ iNumericList* numeric = new NumericList; numeric->addListElement("First position"); numeric->addListElement("Second position"); iNumericList* alphabetic = new AlphabeticList; alphabetic->addListElement("First position"); alphabetic->addListElement("Secodn position"); std::cout << "Numeric list:" << std::endl << std::endl; numeric->write(); std::cout << std::endl << "Alphabetic list:" << std::endl << std::endl; alphabetic->write(); std::cin.get(); return 0; }

Wynik działania powyższego kodu:

Numeric list:

1) First position
2) Second position

Alphabetic list:

a) First position
b) Secodn position
Strony powiązane
strony powiązane
  1. sourcemaking.com/design_patterns/template_method - strona opisująca wzorzec projektowy metoda szablonowa [En]
  2. pl.wikipedia.org - opis tego wzorca na stronie Wikipedii
Propozycje książek
tytuł: C++. Projektowanie oprogramowania. Zasady i wzorce projektowe autor: Klaus Iglberger

Tytuł:

C++. Projektowanie oprogramowania. Zasady i wzorce projektowe

Autor:

Klaus Iglberger

tytuł: Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II autor: Eric Freeman, Elisabeth Robson

Tytuł:

Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II

Autor:

Eric Freeman, Elisabeth Robson

tytuł: React 17. Wzorce projektowe i najlepsze praktyki. Projektowanie i rozwijanie nowoczesnych aplikacji internetowych. Wydanie III autor: Carlos Santana Roldán

Tytuł:

React 17. Wzorce projektowe i najlepsze praktyki. Projektowanie i rozwijanie nowoczesnych aplikacji internetowych. Wydanie III

Autor:

Carlos Santana Roldán

tytuł: Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II autor: Eric Freeman, Elisabeth Robson

Tytuł:

Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II

Autor:

Eric Freeman, Elisabeth Robson

tytuł: Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F# autor: Dmitri Nesteruk

Tytuł:

Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#

Autor:

Dmitri Nesteruk

tytuł: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku autor: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Tytuł:

Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku

Autor:

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

tytuł: Projektowanie interfejsów., Sprawdzone wzorce projektowe. Wydanie III autor: Jenifer Tidwell, Charles Brewer, Aynne Valencia-Brooks

Tytuł:

Projektowanie interfejsów., Sprawdzone wzorce projektowe. Wydanie III

Autor:

Jenifer Tidwell, Charles Brewer, Aynne Valencia-Brooks

tytuł: Kubernetes. Wzorce projektowe. Komponenty wielokrotnego użycia do projektowania natywnych aplikacji chmurowych autor: Bilgin Ibryam,  Roland Huß

Tytuł:

Kubernetes. Wzorce projektowe. Komponenty wielokrotnego użycia do projektowania natywnych aplikacji chmurowych

Autor:

Bilgin Ibryam, Roland Huß

tytuł: Wzorce projektowe w .NET. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F# autor: Dmitri Nesteruk

Tytuł:

Wzorce projektowe w .NET. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#

Autor:

Dmitri Nesteruk

tytuł: Programowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II autor: Alan Shalloway, James R. Trott

Tytuł:

Programowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II

Autor:

Alan Shalloway, James R. Trott

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona