IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Template Method (šablónová metóda)

Návrhový vzor Template Method definuje kostru algoritmu, teda jeho jednotlivé kroky. Potomkovia potom kroky implementujú a predstavujú zameniteľné algoritmy.

Motivácia

V našej aplikácii sa môže objaviť niekoľko algoritmov s rovnakou štruktúrou, ale iným správaním. Ako príklad sa často uvádza uloženie dokumentu do súboru určitého formátu. Zapisovače do súboru určitého typu majú odlišné správanie, ale všetky dokumenty majú väčšinou rovnakú štruktúru (hlavička, telo a pätička). Všetky zapisovacia algoritmy sa teda skladajú z rovnakých primitívnych operácií (ZapisHlavicku(), ZapisTelo() a ZapisPaticku()). Toho využíva vzor Template Method.

Vzor

Template Method zavádza kostru algoritmu pomocou metód, ktoré symbolizujú jeho jednotlivé kroky. Tie sa nazývajú primitívne operácie a jedná sa o metódy abstraktné, privátne. Vzor je reprezentovaný abstraktné triedou, ktorej potomkovia potom implementujú konkrétne algoritmy.

Návrhový vzor Template Method - GOF - Vzory správania

Algoritmy (konkrétnej triedy) potom obsahujú jednotné rozhranie (napr. ZapisHlavicku(), ZapisTelo() a ZapisPaticku()), ale tieto kroky si robí po svojom. Toto rozhranie je privátne a jeho volanie vykonáva jedna verejná metóda, ktorá je implementovaná v abstraktnej triede (tu označená ako TemplateMethod()). V praxi by sa mohla menovať napr. Uloz(). Metóda sa potomkami zdedí, primitívne operácie potomkovia doimplementují. Problém sa rozdelí do podproblémů a tak sa zjednoduší.

Hoci sa jedná o odlišné algoritmy, získame jednotné rozhranie, ktoré sprehľadní kód a uľahčí ďalšie rozširovanie systému.

Počet krokov by mal byť čo najmenšie a často sú označované nejakým prefixom (napr. DoWriteHead()).

Vzor Template Method je v podstate podvzorem vzore Strategy.


 

Všetky články v sekcii
GOF - Vzory správania
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity