« Patrons de conception/Commande » : différence entre les versions
Contenu supprimé Contenu ajouté
imported>SieBot m robot Ajoute: zh:命令模式 |
→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.
[[Catégorie:Patron de conception]]
|