29.04.2013 Views

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

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.

- MacroCommand - o macrocomandă este o colecŃie <strong>de</strong> alte comenzi.<br />

Macrocomenzile se pot crea folosind şablonul Composite. O macrocomandă conŃine o<br />

listă <strong>de</strong> subcomenzi. Când metoda <strong>de</strong> executare e apelată, macrocomandă trimite<br />

subcomenzi. Dacă macrocomandă suporta anulare, atunci toate comenzile interne<br />

trebuie să suporte anulări<br />

istoric<br />

• Şabloane asociate<br />

Printre şabloanele asociate se află:<br />

- Composite - folosit pentru implementarea macrocomenzilor<br />

- Memento - reŃine starea receptorului în ve<strong>de</strong>rea anularii unei comenzi<br />

- Prototype - poate fi folosit pentru a copia comanda înainte <strong>de</strong> a o plasa în<br />

- Singleton - în multe aplicaŃii, istoricul este implementat ca un Singleton<br />

• Exemplu<br />

Un exemplu al şablonului Command este următoarea clasă ce realizează<br />

începerea şi terminarea unei acŃiuni:<br />

class SubmitAction extends AbstractAction {<br />

private Component target;<br />

public SubmitAction (String name, Icon icon, Component: t){<br />

putValue(Action.NAME, name);<br />

putVaiue(Action.SMALL_ICON, icon);<br />

putValue(Action.SHORT_DESCRIPTION, name + " the<br />

program");<br />

target = t;<br />

public void actionPerformed(ActionEvent evt) {<br />

JOptionPane.showMessageDialog(target, "click pentru<br />

începere") ,-<br />

class ExitAction extends AbstractAction {<br />

private Component target;<br />

public ExitAction(String name, Icon icon, Component t){<br />

putValue(Action.NAME, name); putValue(Action.SMALL<br />

ICON, icon); putValue(Action.SHORT_DESCRIPTION,<br />

name + " the<br />

program"); target - t; } public<br />

void actionPerformed(ActionEvent evt) {<br />

int answer = JOptionPane.showConfirmDialog(target,<br />

"DoriŃi să ieşiŃi? ",<br />

"Confirmare", JOptionPane.YES_NO_OPTION); if<br />

(answer == JOptionPane.YES OPTION) {<br />

System.exit(0);<br />

27

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

Saved successfully!

Ooh no, something went wrong!