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);}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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.