Command pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m introduzione |
m →Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto" |
||
(48 versioni intermedie di 37 utenti non mostrate) | |||
Riga 1:
Nella [[Programmazione orientata agli oggetti|programmazione a oggetti]], il '''Command pattern''' è uno dei pattern fondamentali, definiti originariamente dalla [[Gang of Four (scrittori)|Gang of Four]].
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.▼
▲Il
L'obiettivo è rendere variabile l'azione del client senza però conoscere i dettagli dell'operazione stessa. Altro aspetto importante è che il destinatario della richiesta può non essere deciso staticamente all'atto dell'istanziazione del command ma ricavato a tempo di esecuzione.
== Struttura ==
[[
== Esempio ==
In un modulo (python) è
<syntaxhighlight lang=python>
class RoomHandler:
...
</syntaxhighlight>
Sono infatti definite
<syntaxhighlight lang=python>
class Painter(RoomHandler)
...
Riga 37 ⟶ 39:
def actionWork(self, arguments):
""" mount shelves to some walls """
</syntaxhighlight>
Questo approccio
#
# ''RoomHandler'' contiene sia il codice di gestione delle camere che il codice che
# Testare oggetti
Segue il codice equivalente strutturato seguendo le indicazioni del pattern:
<syntaxhighlight lang=python>
class Command:
Riga 67 ⟶ 69:
def execute(self, wall):
""" mount shelf to a wall """
</syntaxhighlight>
<syntaxhighlight lang=python>
def createRoomHandler(self):
handler = RoomHandler()
Riga 82 ⟶ 84:
for work in self.getWorks():
work.execute(self.getSelectedWall())
</syntaxhighlight>
== Considerazioni ==
#
# È possibile incapsulare un'azione in modo che
# I ''Command'',
# È possibile rendere asincrona la scelta dei comandi rispetto alla loro esecuzione. Un certo numero di command
== Bibliografia ==
* [[Erich Gamma|Gamma, E.]], [[Richard Helm|Helm, R.]], [[Ralph Johnson (informatico)|Johnson, R.]] e [[John Vlissides|Vlissides, J.]], '' [[Design Patterns]]: elementi per il riuso di software a oggetti'', Addison Wesley,
** Originale: ''Design Patterns: Elements of Reusable Object-Oriented Software'', Addison Wesley,
== Altri progetti ==
▲*[[Erich Gamma|Gamma, E.]], [[Richard Helm|Helm, R.]], [[Ralph Johnson|Johnson, R.]] e [[John Vlissides|Vlissides, J.]], '' [[Design Patterns]]: elementi per il riuso di software a oggetti'', Addison Wesley, [[1995]], ISBN 887192150X
{{interprogetto|preposizione=sul}}
▲**Originale: ''Design Patterns: Elements of Reusable Object-Oriented Software'', Addison Wesley, [[1995]], ISBN 0201633612
{{Design pattern}}
{{Portale|informatica}}
[[Categoria:
|