De nombreux exemples d'adaptateurs sont triviaux ou irréalistes ( Rectangle contre LegacyRectangle, cliquet contre douille , SquarePeg vs RoundPeg , Canard contre dinde ). Pire, beaucoup ne montrent pas plusieurs adaptateurs pour différents adaptateurs ( quelqu'un a cité Arrays.asList de Java comme un exemple du modèle d'adaptateur. ). L'adaptation d'une interface de une seule classe pour fonctionner avec un autre semble un exemple faible du modèle GoF Adapter. Ce modèle utilise l'héritage et le polymorphisme, on s'attendrait donc à ce qu'un bon exemple montre plusieurs implémentations d'adaptateurs pour des adaptateurs différents .
El meilleur exemple Je l'ai trouvé dans le chapitre 26 de Appliquer UML et les Patterns : Une introduction à l'analyse et à la conception orientées objet et au développement itératif (3e édition) . Les images suivantes sont tirées du matériel de l'instructeur fourni sur un site FTP pour le livre.
La première montre comment une application peut utiliser plusieurs implémentations (adaptateurs) qui sont fonctionnellement similaires (par exemple, des calculateurs d'impôts, des modules de comptabilité, des services d'autorisation de crédit, etc.) mais qui ont des API différentes. Nous voulons éviter de coder en dur notre code de couche de domaine pour gérer les différentes manières possibles de calculer la taxe, de comptabiliser les ventes, d'autoriser les demandes de carte de crédit, etc. Ce sont tous des modules externes qui peuvent varier et dont nous ne pouvons pas modifier le code. L'adaptateur nous permet de faire le codage en dur dans l'adaptateur, alors que notre code de couche de domaine utilise toujours la même interface (l'interface IWhateverAdapter).
Nous ne voyons pas dans la figure ci-dessus les véritables adaptateurs. Cependant, la figure suivante montre comment un appel polymorphe à la fonction postSale(...)
dans l'interface IAccountingAdapter est effectuée, ce qui entraîne l'enregistrement de la vente via SOAP dans un système SAP.
4 votes
Eh bien, si vous voulez faire une démonstration. Vous devriez avoir un exemple prêt à l'emploi dans votre environnement, en fait plusieurs. Sinon, pourquoi voudriez-vous en faire la démonstration ?
1 votes
Plusieurs exemples ici. stackoverflow.com/questions/1673841/
1 votes
@TonyHopkinson Le but est de sensibiliser les gens à ce modèle de conception avec un exemple réel.
10 votes
@AksharRoop. Le Design Pattern est censé être une solution à un problème, et non une solution qui cherche un problème. Le meilleur exemple est celui de votre propre "monde".
1 votes
@TonyHopkinson J'ai peut-être utilisé le terme incorrect de démontrer ici, mais ce que je voulais dire c'était d'expliquer le concept de ce modèle avec un bon exemple. Je suis d'accord, je devrais trouver celui de mon propre système...
1 votes
@FunctionalQyrus les patrons d'adaptateurs cités ne sont pas d'excellents exemples (discutables !). Il y a peu de détails sur ce que sont les différents Adaptees. A part l'adaptateur XMLA, je ne suis pas sûr que les autres soient de vrais adaptateurs dans le sens où il y a une variation dans les interfaces des adaptateurs (pour un adaptateur donné). Arrays.asList n'est pas, selon moi, un véritable adaptateur au sens du GoF.
0 votes
Vous pouvez également consulter cette question stackoverflow.com/questions/3478225/
0 votes
Cela répond-il à votre question ? Quand avons-nous besoin d'un modèle d'adaptation ?