Design pattern en AS3 #6 Command

Cet article est le 6ème d’une série de sept articles traitant de l’implémentation des principaux design pattern en Action Script 3.

AS3 est un langage permettant de réaliser des applications hybrides mobiles via Adobe AIR. Le système Adobe AIR permettant aux développeurs d’intégrer le même code dans des applications et jeux natifs pour les ordinateurs de bureau Windows et Mac OS, et également pour les périphériques iOS et Android. Ce langage est un bon moyen de s’initier aux patrons de conception et aux paradigmes objets car il est strict en termes de syntaxes et d’architecture. Ces articles comportent une présentation théorique et un exemple pratique.

Aujourdhui : Command

Le patron de conception Command est un patron de type comportemental qui encapsule la notion d’invocation. Il permet de séparer complètement le code initiateur de l’action, du code de l’action elle-même. Le design pattern Command est souvent utilisé dans les IHM où, par exemple, un élément de menu peut actionner différentes Commandes de façons à ce que l’objet de cet élément n’ait pas besoin de connaître les détails de l’action effectuée par la Commande. L’utilisation de ce patron de conception est recommandé lorsqu’il y a trop de commandes similaires et que le code devient difficile à maintenir. Un objet Commande sert à communiquer une action à effectuer, ainsi que les arguments requis. L’objet est envoyé à une seule méthode dans une classe, qui traite les Commandes du type requis. L’objet est libre d’implémenter le traitement de la Commande par un switch, ou un appel à d’autres méthodes. Cela permet d’apporter des modifications aux Commandes définies simplement dans la définition de la Commande, et non dans chaque classe qui utilise la Commande. Exemple d’utilisation du patron de conception Command en Action Script 3 : // création d'un objet command

var clickMenu:clickMenuCommand = new clickMenuCommand(*);

// exécution de cet objet

MainController.instance.commandManager.exec(clickMenu);

Auteur : Eric Duport, Ingénieur Concepteur Développeur à SQLI Lyon