95 votes

adaptateur - Tout exemple réel d'adaptateur

Je veux démontrer l'utilisation de Modèle d'adaptateur à mon équipe. J'ai lu de nombreux livres et articles en ligne. Tout le monde cite un exemple qui est utile pour comprendre le concept (forme, carte mémoire, adaptateur électronique, etc.), mais il n'y a pas de véritable étude de cas.

Pouvez-vous nous faire part d'une étude de cas sur le modèle d'adaptation ?

p.s. J'ai essayé de chercher des questions existantes sur stackoverflow, mais je n'ai pas trouvé la réponse, donc je la poste comme une nouvelle question. Si vous savez qu'il y a déjà une réponse à cette question, veuillez la rediriger.

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.

79voto

Fuhrmanator Points 1157

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).

Fig. 26.1

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.

Fig. 26.2

0 votes

Cet exemple utilisant des sessions est également très bon (bien que l'implémentation ne soit pas complètement correcte, je pense, en utilisant des statiques) : community.sitepoint.com/t/phpunit-testing-cookies-and-sessions/

0 votes

Et bien sûr, l'implémentation en PHP : github.com/alex-moreno/DesignPatternsPHP/tree/master/Adapter

7voto

babu Points 31

Le patron adaptateur fonctionne comme un pont entre deux interfaces incompatibles. Ce modèle implique une classe unique appelée adaptateur qui est responsable de la communication entre deux interfaces indépendantes ou incompatibles. responsable de la communication entre deux interfaces indépendantes ou incompatibles ou incompatibles.

Des exemples concrets peuvent être un traducteur de langue ou un chargeur de téléphone portable. Plus d'informations ici dans cette vidéo youtube :

Youtube - Modèle de conception adaptateur : Introduction

2voto

03Usr Points 1510

Consultez ces 2 sites contenant des exemples avec des explications :

http://www.dofactory.com/Patterns/PatternAdapter.aspx

http://www.blackwasp.co.uk/Adapter.aspx

2voto

Bill Points 11

Vous pouvez trouver une implémentation PHP du modèle d'adaptateur utilisé comme défense contre les attaques par injection ici :

http://www.php5dp.com/category/design-patterns/adapter-composition/

L'un des aspects intéressants du modèle d'adaptation est qu'il existe en deux versions : Un adaptateur de classe reposant sur l'héritage multiple et un adaptateur d'objet reposant sur la composition. L'exemple ci-dessus repose sur la composition.

1 votes

1voto

Sai Sunder Points 392

Un exemple très simple qui est à la fois en temps réel et peut être compris très facilement est expliqué en http://preciselyconcise.com/design_patterns/adapter.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X