Identifiant :
Mot de passe :

Patrons de conception

Commande

Diagramme de classes :

Diagramme de classes

Description :

Type :  Co  (Comportemental)
Intention : Encapsule une requête comme un objet, autorisant ainsi le paramétrage des clients par différentes requêtes, files d’attente et récapitulatifs de requêtes, et de plus, permettant la réversion des opérations.
Applicabilité : Utilisez la Commande, lorsque vous voulez :
- Introduire dans des objets, sous la forme de paramètres, des actions à effectuer. Un tel paramétrage peut s'exprimer en langage procédural par l'intermédiaire de fonctions callback, c'est-à-dire, des fonctions enregistrées dans un certain contexte pour être appelées ultérieurement. Les commandes sont la version orientée objet des fonctions callbacks.
- Spécifier, mettre en file d'attente, et exécuter les requêtes à différents instants. Un objet Commande peut avoir une durée de vie indépendante de la requête originale. Si le récepteur d'une requête peut avoir une représentation indépendante de l'espace adresse, alors on peut transférer l'objet Commande pour la requête à un autre processus et y servir complètement la requête.
- Assurer des Undo. L'opération Execute de Commande peut stocker un état pour inverser son effet dans la commande elle-même. L'interface de Commande doit posséder une opération supplémentaire, Undo, qui supprime les effets d'un précédent appel à Execute. Les commandes exécutées sont stockées dans une liste historique. Un nombre indéterminé d'opérations Redo et Undo peuvent s'effectuer par la traversée de cette liste de façon rétrograde ou directe, par appels de Undo et Execute respectivement.
- Permettre une mémorisation de modifications, afin de pouvoir les appliquer à nouveau après un éventuel crash système. En ajoutant à l'interface de Commande les opérations charger et stocker, on peut réaliser un enregistrement persistant des modifications. Récupérer d'un crash, implique de recharger les commandes enregistrées depuis le disque et de les exécuter à nouveau à l'aide de l'opération Exécute.
- Structurer un système autour d'opérations de haut niveau, construites à l'aide de primitives. Une structure de ce type est courante dans les systèmes d'information qui autorisent les transactions. Une transaction encapsule un ensemble de modifications à effectuer sur des données. La commande fournit le moyen de modéliser les transactions. Les commandes ont une interface commune qui permet d'invoquer toutes les transactions de la même manière. Le modèle favorise également l'extension du système par l'apport de nouvelles transactions.

Points forts :

  1. 1. Extensibilité
    1. 1.1 L'ajout ou la suppression d'une commande ne nécessite pas de modification de code
    2. 1.2 Factorisation du protocole des commandes
  2. 2. Protocole uniforme
    1. 2.1 Point d'accès unique pour l'exécution des commandes
  3. 3. Historisation simplifiée
    1. 3.1 Historisation des commandes facilité

Participants au patron :

Patrons abîmés :

  1. 1. Réification partielle de la commande

Problèmes :

  1. 1. Encapsulation d'action
Les têtes de mule
Cédric BOUHOURS
Cédric BOUHOURS
Cédric BOUHOURS