Command pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
m →Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto" |
||
(51 versioni intermedie di 39 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]].
Questo Pattern 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.▼
▲
L'obiettivo è rendere variabile l'azione del client senza però conoscere i dettagli dell'operazione stessa. Altro aspetto importate è che il destinatario della richiesta può non essere deciso staticamente all'atto dell'istanziazione del command ma ricavato a tempo di esecuzione.▼
▲L'obiettivo è rendere variabile l'azione del client senza però conoscere i dettagli dell'operazione stessa. Altro aspetto
==Struttura==▼
▲== Struttura ==
[[Immagine:CommandPattern.png|center|Struttura del Design Pattern '''Command''']]▼
▲[[
==Esempio==▼
▲== Esempio ==
In un modulo (python) è definita la classe che segue.
<syntaxhighlight lang=python>
class RoomHandler:
...
</syntaxhighlight>
Sono infatti definite
<syntaxhighlight lang=python>
class Painter(RoomHandler)
...
Riga 38 ⟶ 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 68 ⟶ 69:
def execute(self, wall):
""" mount shelf to a wall """
</syntaxhighlight>
<syntaxhighlight lang=python>
def createRoomHandler(self):
handler = RoomHandler()
Riga 83 ⟶ 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:
|