Maison > interface Web > js tutoriel > Modèle de conception # Modèle d'adaptateur

Modèle de conception # Modèle d'adaptateur

WBOY
Libérer: 2024-07-18 01:27:31
original
1013 Les gens l'ont consulté

Design Pattern # Adapter Pattern

Au cours des dernières semaines, j'ai partagé certains des modèles de conception tendances, comme ceux de PubSub et de Singleton. Aujourd'hui, je vais partager un autre article de cette série, mais veuillez commenter ci-dessous et me dire quel modèle de conception je devrais aborder ensuite !

Le modèle d'adaptateur

Le modèle d'adaptateur est un modèle de conception structurelle qui permet à des objets ayant des interfaces incompatibles de collaborer. Il est souvent utilisé lorsque vous souhaitez faire fonctionner des classes existantes avec d'autres sans modifier leur code source. Ce modèle est particulièrement utile lorsque l'interface d'une classe existante ne correspond pas à celle dont vous avez besoin.

Scénario de cas réel

Prenons un exemple concret. Vous avez été chargé d'intégrer un lecteur vidéo tiers dans votre application. Cependant, le lecteur vidéo fonctionne différemment et possède une interface de méthode différente de celle attendue par votre application. Dans ce cas, vous pouvez utiliser le modèle d'adaptateur pour créer une classe wrapper autour du lecteur vidéo, rendant ainsi le code tiers compatible avec le code de votre application existant.

Voici le code que vous utiliseriez dans ce cas :

// Adapter class
class VideoPlayerAdapter {
    constructor() {
        this.externalPlayer = new ThirdPartyVideoPlayer({
            // some configuration
        });
    }

    play() {
        const video = this.externalPlayer.getVideo();
        this.externalPlayer.playVideo(video, {
            // additional parameters
        });
    }
}

// Your application code
class Application {
    constructor() {
        this.videoPlayer = new VideoPlayerAdapter();
    }

    start() {
        // Play video using your application code
        this.videoPlayer.play();
    }
}

Copier après la connexion

Décomposons le code ci-dessus :

  1. ThirdPartyVideoPlayer est une bibliothèque externe hypothétique que votre application souhaite utiliser. Cependant, son interface pourrait ne pas être compatible avec votre application.
  2. VideoPlayerAdapter est la classe d'adaptateur. Il entoure ThirdPartyVideoPlayer. L'interface de l'adaptateur est compatible avec votre application. Lorsque la méthode play() de l'adaptateur est appelée, elle appelle en interne les méthodes nécessaires sur ThirdPartyVideoPlayer.
  3. L'application est votre code d'application. Il crée une instance de VideoPlayerAdapter et l'utilise comme s'il s'agissait d'un lecteur vidéo classique. Lorsqu'il appelle la méthode play() sur l'adaptateur, celui-ci la traduit en appels appropriés à ThirdPartyVideoPlayer.

De cette façon, la classe Application n'a pas besoin de savoir quoi que ce soit sur le fonctionnement de ThirdPartyVideoPlayer. Si jamais vous devez remplacer ThirdPartyVideoPlayer par une bibliothèque différente, il vous suffit d'écrire un nouvel adaptateur : la classe Application peut rester la même. C'est le principal avantage du modèle Adapter : il dissocie le code de votre application des spécificités des bibliothèques tierces.

Différences entre le modèle d'adaptateur et le modèle de façade

Bien que le modèle d'adaptateur et le modèle de façade puissent sembler similaires, ils répondent à des objectifs différents et sont utilisés dans des contextes différents :

  1. Objectif :
    • Modèle d'adaptateur : L'objectif principal du modèle d'adaptateur est de rendre deux interfaces incompatibles compatibles entre elles. Il permet d'utiliser une classe existante avec une interface différente comme si elle implémentait une interface différente.
    • Facade Pattern : L'objectif principal du Facade Pattern est de fournir une interface simplifiée à un sous-système complexe. Il masque les complexités du sous-système et fournit une interface de niveau supérieur qui rend le sous-système plus facile à utiliser.
  2. Utilisation :
    • Modèle d'adaptateur : Il est utilisé lorsque vous devez intégrer une nouvelle classe ou bibliothèque qui ne correspond pas à la classe ou à l'interface existante dans votre application. Le modèle d'adaptateur consiste à adapter une interface particulière à une interface attendue.
    • Modèle de façade : Il est utilisé lorsque vous souhaitez simplifier les interactions avec un sous-système complexe. La façade fournit une méthode simple pour interagir avec le système, cachant sa complexité.
  3. Conception :
    • Modèle d'adaptateur : implique généralement la création d'une nouvelle classe (l'adaptateur) qui implémente l'interface attendue par le client et traduit les appels vers la classe adaptée.
    • Facade Pattern : implique la création d'une classe Facade qui fournit des méthodes simplifiées au client, agrégeant souvent plusieurs fonctionnalités du sous-système.

En résumé, alors que les deux modèles fournissent un moyen de travailler avec du code existant, le modèle Adapter se concentre sur la compatibilité de l'interface, tandis que le modèle Facade se concentre sur la simplification de l'interaction avec un système complexe.

Super Invitation - Gagnez 5 000 $

Alors, pendant que vous êtes ici, permettez-moi de vous inviter à participer à notre prochain Superthis d'août !

Cet événement à distance vous donne la chance de mettre en valeur vos compétences et votre créativité en relevant le défi de transformer vos interactions virtuelles avec nos outils de communication en temps réel. Avec SuperViz, vous avez une chance de gagner un prix de 5 000 $.

Inscrivez-vous maintenant pour recevoir des mises à jour, des conseils et des ressources et préparez-vous à pirater !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal