Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
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