« Patrons de conception/Commande » : différence entre les versions

Contenu supprimé Contenu ajouté
imported>SieBot
m robot Ajoute: zh:命令模式
Mytto (discussion | contributions)
→‎Exemple : Coloration syntaxique
Ligne 12 :
== Exemple ==
En [[Perl (langage)|Perl]] :
 
<source lang="perl">
# exemple de style "switch":
Ligne 47 ⟶ 49 :
return $objectRef ? $objectRef->handleCommand($cmd, @_) : undef;
}
</source>
 
Comme [[Perl (langage)|Perl]] dispose d'un ''AUTOLOAD'', le principe pourrait être émulé. Si un ''package'' voulait effectuer un ensemble de commandes arbitrairement grand, il pourrait recenser toutes les méthodes ''undefined'' grâce à ''AUTOLOAD'', puis tenter de les répartir (ce qui suppose que ''%commandHandlers'' contient une table de pointeurs, dont les clés sont les noms des méthodes):
 
<source lang="perl">
sub AUTOLOAD {
my $me = shift;
Ligne 57 ⟶ 61 :
return $objectRef ? $objectRef->handleCommand($methodName, @_) : undef;
}
</source>
 
Cela convertit les appels aux différentes méthodes dans l'objet courant, en appels à une méthode ''handleCommand'' dans différents objets. Cet exemple utilise [[Perl (langage)|Perl]] pour adapter un patron de conception à base d'objets Commandes, dans une interface qui en est dépourvue.
Cet exemple utilise [[Perl (langage)|Perl]] pour adapter un patron de conception à base d'objets Commandes, dans une interface qui en est dépourvue.
 
[[Catégorie:Patron de conception]]