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 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.
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(); } }
Décomposons le code ci-dessus :
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.
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 :
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.
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!