UGIdotNET Home UGIdotNET Home
UGIdotNET Blogs UGIdotNET Blogs
UGIdotNET Forum UGIdotNET Forum
MSDN Architetti MSDN Architetti
Visualizza Modifiche Visualizza Modifiche
Modifica Modifica
Stampa Stampa
Modifiche Recenti Modifiche Recenti
Sottoscrizioni Sottoscrizioni
Ufficio Oggetti Smarriti Ufficio Oggetti Smarriti
Cerca Riferimenti Cerca Riferimenti
Rinomina Rinomina
Cerca

Versioni

31/12/2005 4.05.37
LucaMinudel-151.47.143.165
30/12/2005 16.46.32
LucaMinudel-151.47.133.207
30/12/2005 14.07.09
LucaMinudel-151.47.133.207
Elenco completo versioni Elenco completo versioni
Pattern State
.
Summary Un design pattern che al cambiare dello stato cambia il comportamento di un oggetto.

Conosciuto anche come

Objects for States.

Molto simile al PatternPluggableObject.

Intento

Il design pattern State cambia il comportamento di un oggetto (il risultato dell'operazione Request dell'oggetto Context) al cambiare dello stato (ConcreteStateA, ConcreteStateB, ...)

Lo state corrente (che può essere ConcreteStateA, ConcreteStateB, ...) è stabilito a run-timequindi questo design pattern è classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto agli oggetti. Rispetto al fine questo design pattern è classificato tra i ClassificazioneDeiDesignPattern#Comportamentali.

Diagramma UML

Un'altro diagramma equivalente qui .

Motivazione

Quando un oggetto (Context) può assumere a run-time stati diversi (ConcreteStateA, ConcreteStateB, ...) e a seconda dello stato corrente la medesima operazione (il metodo Request di Context) ha comportamenti distinti (ConcreteStateA.Handle() piuttosto che ConcreteStateB.Handle() ...), invece di tempestare il codice di implementazione dei metodi dell'oggetto di If per testare lo stato corrente il design pattern State definisce una classe base per ogni stato (ConcreteStateA, ConcreteStateB, ...) e vi implementa il relativo comportamento.

Esempi d'uso in .NET

Nessun esempio trovato.

Note sulla implementazione in .NET

Del codice .NET di esempio è disponibile qui .

Relazione con altri design pattern

Il PatternFlyweight spiega quando e come si possono condividere gli oggetti State.

Gli oggetti State spesso impiegano il PatternSingleton.

Vedi la mappa della RelazioneTraDesignPattern.

Approfondimenti

Domande di approfondimento

  • Quando l'oggetto ha solo 2 o 3 stati è eccessivo usare questo design pattern?

Link

VediAnche CatalogoDeiDesignPattern

UGIdotNETWiki

UGIdotNETWiki è il WikiWiki italiano dedicato a .NET

Se è la prima volta che senti parlare di Wiki, leggi il BenvenutoAiVisitatori e WikiInUnMinuto, oppure il ManualePassoPassoDelWiki.

Argomenti Recenti

  • PatternState
© 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali