Command pattern: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ValterVBot (discussione | contributi)
m Esempio: tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (4), </source> → </syntaxhighlight> (4)
m Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto"
 
(6 versioni intermedie di 4 utenti non mostrate)
Riga 1:
Nella [[Programmazione orientata agli oggetti|programmazione ada 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.
Riga 18:
</syntaxhighlight>
 
Questa è destinata ada occuparsi della gestione delle camere di una casa nonché, attualmente, allo svolgimento di alcuni lavori da eseguire.
 
Sono infatti definite alcune sottoclassi che implementano diversi lavori che è possibile svolgere sulle pareti delle camere.
Riga 43:
Questo approccio presenta diversi aspetti negativi.
 
# A fronte di ''n'' possibili lavori (azioni) si rendono necessarie diverse sottoclassi: una per ciascuna azione da implementare ede una per ogni possibile composizione di azioni base (adper esempio dipingere camera e montare di seguito gli scaffali). Qualora invece le azioni fossero ''Command'' indipendenti dal RoomHandler, sarebbe possibile creare istanze su quest'ultimo piuttosto che creare sottoclassi.
# ''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 ede oneroso. Incapsulare le azioni in ''Command'' rende possibile il testing esclusivo su ciascuna azione (eventualmente ricorrendo all'uso di [[Mock Objects|Mock]]) il che semplifica notevolmente la fase di testing e validazione.
 
Segue il codice equivalente strutturato seguendo le indicazioni del pattern:
Riga 98:
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
{{Design Patterns Patternspattern}}
{{Portale|informatica}}
 
[[Categoria:PatternDesign pattern]]