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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

12 Štúdie vybraných tém programových a informaných systémov<br />

tried pre jednotlivé inštrukné sady. Preto má klient k depozícii len abstraktné rozhranie,<br />

ktoré mu umožuje testova CPU aj MMU. O výber konkrétnej sady požiada abstraktnú<br />

továre (pozri príklad 1-2).<br />

public class Client {<br />

public void doIt () {<br />

AbstractFactory af;<br />

af = AbstractFactory.getFactory(AbstractFactory.EMBER);<br />

CPU cpu = af.createCPU();<br />

...<br />

} // doIt<br />

} // class Client<br />

Príklad 1-2. Zdrojový kód aplikácie na strane klienta.<br />

Zdrojový kód Abstraktnej továrne opisuje funkcionalitu tejto súiastky. Abstraktná továre<br />

vytvorí inštancie konkrétnych tovární, v našom prípade ide o konkrétnu továre<br />

pre inštruknú sadu poítaa Ember – EmberToolkit a inštruknú sadu pre poíta Enginola –<br />

EnginolaToolkit. Abstraktná továre obsahuje metódu getFactory. Táto metóda vracia<br />

referenciu na konkrétnu továre. Z pohadu klienta je getFactory metóda, ktorá mu<br />

umožuje zvoli si typ inštruknej sady, ktorú chce testova. Okrem metódy getFactory<br />

abstraktná továre obsahuje definície metód, ktoré budú implementované konkrétnymi<br />

továrami.<br />

public abstract class ArchitectureToolkit {<br />

private static final<br />

EmberToolkit emberToolkit = new EmberToolkit();<br />

private static final<br />

EnginolaToolkit enginolaToolkit = new EnginolaToolkit();<br />

...<br />

static final ArchitectureToolkit getFactory(int architecture) {<br />

switch (architecture) {<br />

case ENGINOLA: return enginolaToolkit;<br />

case EMBER: return emberToolkit;<br />

...<br />

}<br />

} // getFactory()<br />

public abstract CPU createCPU() ;<br />

public abstract MMU createMMU() ;<br />

...<br />

} // AbstractFactory<br />

Príklad 1-3. Zdrojový kód Abstraktnej továrne. – poda (Grand, 2008)<br />

Konkrétna továre predstavuje implementáciu rozhraní, ktoré boli definované v abstraktnej<br />

továrni. V tomto prípade ide o metódy createCPU a createMMU. Metódy sú urené<br />

na vytváranie testovacích tried pre jednotlivé inštrukné sady. Klient nemá o spôsobe vytvárania<br />

týchto tried priamu vedomos.<br />

class EmberToolkit extends ArchitectureToolkit {<br />

public CPU createCPU() {<br />

return new EmberCPU();<br />

} // createCPU()

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

Saved successfully!

Ooh no, something went wrong!