Aller au contenu

State

Contexte : Permettre à un objet de modifier son comportement lorsque son état interne change. L’objet semblera changer de classe.

public interface IState
{
void Handle(Context context);
}
public class ConcreteStateA : IState
{
public void Handle(Context context) => context.State = new ConcreteStateB();
}
public class Context
{
public IState State { get; set; }
public void Request() => State.Handle(this);
}

Flux de travail de documents : Un document peut être dans les états Brouillon, Relecture, Approuvé ou Publié. Chaque état définit les opérations autorisées (modifier, approuver, rejeter) et les transitions.

Exemple : Dans .NET, la machine à états dans System.Threading.Tasks (machine à états asynchrone) – bien que ce ne soit pas le pattern classique. Également, StateMachine dans Unity et Workflow Foundation.