Command pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Esempio: Corretto errore di battitura Etichetta: Modifica da applicazione mobile |
m →Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto" |
||
(11 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1:
Nella [[Programmazione orientata agli oggetti|programmazione
Il Command pattern è uno dei [[design pattern]] che permette di isolare la porzione di codice che effettua un'azione (eventualmente molto complessa) dal codice che ne richiede l'esecuzione; l'azione è incapsulata nell'oggetto Command.
Riga 7:
== Struttura ==
[[File:CommandPattern.png|center|Struttura del Design Pattern '''Command'''|bordo|549x549px]]
== Esempio ==
In un modulo (python) è definita la classe che segue.
<
class RoomHandler:
...
</syntaxhighlight>
Questa è destinata
Sono infatti definite alcune sottoclassi che implementano diversi lavori che è possibile svolgere sulle pareti delle camere.
<
class Painter(RoomHandler)
...
Riga 39:
def actionWork(self, arguments):
""" mount shelves to some walls """
</syntaxhighlight>
Questo approccio presenta diversi aspetti negativi.
# A fronte di ''n'' possibili lavori (azioni) si rendono necessarie diverse sottoclassi: una per ciascuna azione da implementare
# ''RoomHandler'' contiene sia il codice di gestione delle camere che il codice che esegue le azioni: esso è sovraccarico di responsabilità ed estendere un'azione comporta un aumento della complessità del ''RoomHandler''.
# Testare oggetti con numerose responsabilità è in genere complesso
Segue il codice equivalente strutturato seguendo le indicazioni del pattern:
<
class Command:
Riga 69:
def execute(self, wall):
""" mount shelf to a wall """
</syntaxhighlight>
Sia nell'atto di creazione di un'istanza ''RoomHandler'', sia a ''run-time'', è possibile selezionare le azioni che si intende svolgere:
<
def createRoomHandler(self):
handler = RoomHandler()
Riga 84:
for work in self.getWorks():
work.execute(self.getSelectedWall())
</syntaxhighlight>
== Considerazioni ==
Riga 98:
== Altri progetti ==
{{interprogetto|
{{Design
{{Portale|informatica}}
[[Categoria:
|