Le patron de conception Commande

9

Click here to load reader

description

Présentation rapide du patron Commande, du GoF.

Transcript of Le patron de conception Commande

Page 1: Le patron de conception Commande

Le patron de conception Commande

Gerson Sunyé — Université de Nantes http://sunye.free.fr

�1

Page 2: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Objectif

• Encapsuler une requête dans un objet, de manière à pouvoir stocker une liste de requêtes, les tracer et permettre l’annulation d’opérations.

�2

Page 3: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Motivation

• Parfois, nous avons besoin d’envoyer des requêtes à des objets, sans connaître l’opération qui est demandée, ni le receveur de cette requête.

• Par exemple, un bouton d’une IHM: seuls les clients qui créent et utilisent un bouton peuvent implémenter l’action liée à ce bouton.

�3

Page 4: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Exemple

open()close()cut()copy()paste()

Document

execute()Command

execute()PasteCommand

Menuclicked()

MenuItemApplication

PasteCommand:execute() { document.paste()}

�4

Page 5: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Solution

• Transformer les requêtes en objets, dont les classes sont des sous-classes d’une classe abstraite «Command», qui définit une interface pour l’exécution d’opérations.

�5

Page 6: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Structure

/Invoker

/action()/Receiver

execute()/Command

execute()/Command

Command:execute() { receiver.action()}

�6

Page 7: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

Compromis d’implémentation

• Les commandes peuvent stocker des informations d’état, qui aideront l’annulation ou la création d’un historique d’opérations.

• Les commandes peuvent être composées (voir Composite).

�7

Page 8: Le patron de conception Commande

Gerson Sunyé — Université de Nantes

• Parfois, les commandes peuvent implémenter l’opération, sans la déléguer.

�8

Page 9: Le patron de conception Commande

Commande

Command

�9