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 13<br />

public MMU createMMU() {<br />

return new EmberMMU();<br />

} // createMMU()<br />

...<br />

} // class EmberFactory<br />

Príklad 1-4. Zdrojový kód konkrétnej továrne.<br />

Posledná as zdrojového kódu predstavuje implementáciu tried. Tieto triedy sú implementáciou<br />

rozhraní CPU a MMU, ktoré má klient k dispozícii. Klient nepozná implementáciu<br />

tried, ktoré implementujú rozhrania CPU a MMU. Klient nemôže priamo uri, s ktorou triedou<br />

bude pracova. Postará sa o to abstraktná továre.<br />

public abstract class CPU {<br />

...<br />

} // class CPU<br />

class EmberCPU extends CPU {<br />

...<br />

} // class EmberCPU<br />

Príklad 1-5. Zdrojový kód abstraktného rozhrania.<br />

Uvedené ukážky zdrojového kódu sú len jednou z možností, ako možno implementova<br />

vzor Abstraktná továre.<br />

1.2.4 Zhrnutie použitia Abstraktnej továrne<br />

Abstraktná továre je jeden z najviac používaných návrhových vzorov najmä pre jeho<br />

rozširovatenos a všeobecnos.<br />

Výhody<br />

Abstraktná továre umožuje klientovi abstrahova od implementácie jednotlivých tried.<br />

Na strane klienta nie je potrebné sa zaobera tým, ako je daný produkt implementovaný,<br />

klient má k dispozícii len abstraktné rozhrania. Klient sa nemusí stara o to, ako sa objekty<br />

vytvárajú, a ani kedy sa vytvárajú.<br />

alšou výhodou je rozširovatenos, o znamená, že ke klient potrebuje nový druh<br />

produktu, možno na strane abstraktnej továrne prida alšiu konkrétnu továre.<br />

Nevýhody<br />

Pri pridávaní alších produktov je nutné prida metódy pre vytváranie pre všetky konkrétne<br />

továrne. V našom príklade mal klient k dispozícii dva produkty – testovanie CPU<br />

a testovanie MMU. V prípade, že by chcel prida alší produkt na testovanie, napr. grafický<br />

koprocesor, bolo by potrebné implementova tento produkt vo všetkých konkrétnych továrach.<br />

A to i v prípade, že klient by nechcel používa všetky produkty v rámci každej<br />

sady.<br />

alšou nevýhodou je vytváranie konkrétnych tovární pre všetky sady v abstraktnej<br />

továrni. Klient testoval dve inštrukné sady – Ember a Enginola. Konkrétne továrne pre obe<br />

sady boli vytvorené priamo pri vytvorení abstraktnej továrne. Táto skutonos má

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

Saved successfully!

Ooh no, something went wrong!