Bonjour,
J'essaye de définir une API destinée à invoquer des méthodes définies par l'utilisateur. J'ai identifié deux familles de solutions, mais aucune ne me satisfait. Je cherche quelque chose de mieux...si vous avez des idées.
1ère solution : les classes utilisateurs doivent implémenter une interface présentant un unique point d'entrée "execute". Inconvénient : dans le cas qui m'intéresse la variété des fonctions à invoquer est très grande, donc il y aura à implémenter soit un très grand nombre de classes, soit un immonde switch...case pour brancher sur la bonne méthode à l'intérieur d'une classe.
2ème solution : les classes utilisateurs peuvent implémenter plusieurs méthodes différentes qui répondent à un ou plusieurs prototypes prédéfinis, l'API se chargerait par introspection de détecter les méthodes compatibles et brancherait automatiquement un appel vers la bonne méthode. Inconvénient : On ne respecte pas l'usage voulant que l'API expose son contrat sous forme d'une interface. Autrement dit l'utilisateur doit connaître la convention d'écriture des méthodes pour savoir utiliser l'API.
Pour réconcilier les deux solutions j'ai l'impression d'avoir besoin d'une notion d'interface qui n'impose que les prototypes et pas les noms de méthodes...
Partager