04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Návrhové vzory 9<br />

Príklad z reálneho sveta<br />

Abstraktnú továre možno pripodobni stroju na výrobu cestovín. Použitím tohto stroja<br />

môžeme vytvori cestoviny rôznych tvarov v závislosti od nadstavca, ktorý je na konci<br />

stroja. Do stroja vstupuje vždy rovnaká hmota, ale zo stroja vychádza cestovina požadovaného<br />

tvaru. Stroj má teda úlohu abstraktnej továrne a nadstavec má úlohu konkrétnej<br />

továrne.<br />

Grafické prvky pre viaceré operané systémy<br />

alším príkladom Abstraktnej továrne je trieda WindowFactory s metódou napríklad<br />

CreateButton. WindowFactory je abstraktná továre. Jednoduchým príkladom použitia<br />

vzoru Abstraktná továre môže by prenosná klientska aplikácia, ktorá chce používa<br />

viaceré grafické prvky operaného systému.<br />

Ovládae pre rôzne databázové systémy<br />

alším príkladom použitia Abstraktnej továrne je pripojenie na rôzne databázové systémy.<br />

Môžeme si predstavi situáciu, kedy používate používa bežné príkazy na komunikáciu<br />

s databázou, avšak pracuje naraz s viacerými druhmi databázových systémov.<br />

Vzor Abstraktná továre môže by použitý aj v prípade, že chceme oddeli aplikáciu<br />

od úložiska dát (napr. relaná databáza), ktoré táto aplikácia používa. Toto oddelenie aplikácie<br />

od databázy umožuje zmeni relanú databázu bez potreby zmien v aplikácii. Môžeme<br />

si predstavi, že aplikácia používa niekoko základných operácií na prístup do databázy:<br />

DBTransaction, DBQuery a DBReport.<br />

Implementácia týchto operácií je pre rôzne databázové systémy odlišná, priom<br />

funkcionalita týchto operácií ostáva v princípe rovnaká. Takže potrebuje sady jednotlivých<br />

operácií pre rôzne databázové systémy. Pre konkrétnu operáciu urenú pre konkrétny<br />

systém potrebujeme vygenerova samostatné SQL príkazy a tiež alšie parametre, ktoré<br />

možno použi pri ladení výkonnosti jednotlivých operácií.<br />

Existuje viacero možností riešenia. Môžeme každú operáciu implementova zvláš<br />

pre každý databázový systém. Príslušný kód, ktorý bude vykonaný sa vyberie v ase<br />

kompilácie pomocou konštrukcie switch. Je však potrebné pri každej zmene rekompilova<br />

kód aplikácie. alšou možnosou by bolo dynamické vytváranie SQL príkazov, ale<br />

v tomto prípade by bolo potrebné udržiava všetky verzie programu v ase jeho vykonávania.<br />

Za najvhodnejšie je však možné považova riešenie, kde bude použitý vzor Abstraktná<br />

továre. Aplikácia požiada abstraktnú továre o sprístupnenie objektu, ktorý bude<br />

odpoveda zvolenej databázovej technológii. Aplikácia bude používa funkcionalitu databázy<br />

pomocou definovaného rozhrania.<br />

1.2.2 Použitie vzoru<br />

Z príkladov uvedených v predchádzajúcej asti možno vytuši úel použitia vzoru Abstraktná<br />

továre. Abstraktnú továre použijeme v prípade, ak chceme vytvára skupiny<br />

súvisiacich objektov a pritom nechceme špecifikova konkrétne triedy vytváraných objektov.<br />

Taká situácia môže nasta vo viacerých prípadoch:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!