Aller au contenu

Command

Contexte : Encapsuler une requête sous forme d’objet, ce qui permet de paramétrer des clients avec des files d’attente, des requêtes et des opérations.

public interface ICommand
{
void Execute();
}
public class Receiver
{
public void Action() => Console.WriteLine("Receiver action");
}
public class ConcreteCommand : ICommand
{
private Receiver _receiver;
public ConcreteCommand(Receiver receiver) => _receiver = receiver;
public void Execute() => _receiver.Action();
}
public class Invoker
{
private ICommand _command;
public void SetCommand(ICommand command) => _command = command;
public void PressButton() => _command.Execute();
}

Annuler/rétablir dans les éditeurs : Chaque action utilisateur (insertion, suppression, formatage) devient une commande avec Execute() et Undo(). La pile d’historique stocke les commandes pour annuler/rétablir.

Exemple : Dans ASP.NET Core MVC, les actions de contrôleur sont des objets commande. De même, ICommand dans WPF/MVVM et BackgroundService avec file d’attente de commandes.