In den letzten Wochen habe ich einige der trendigen Designmuster geteilt, wie die PubSub- und die Singleton-Muster. Heute werde ich einen weiteren Artikel dieser Serie veröffentlichen, aber bitte kommentieren Sie unten und sagen Sie mir, welches Designmuster ich als nächstes behandeln soll!
Das Adaptermuster ist ein strukturelles Entwurfsmuster, das die Zusammenarbeit von Objekten mit inkompatiblen Schnittstellen ermöglicht. Es wird häufig verwendet, wenn Sie vorhandene Klassen mit anderen zusammenarbeiten lassen möchten, ohne deren Quellcode zu ändern. Dieses Muster ist besonders nützlich, wenn die Schnittstelle einer vorhandenen Klasse nicht mit der von Ihnen benötigten übereinstimmt.
Betrachten wir ein Beispiel aus dem wirklichen Leben. Sie wurden damit beauftragt, einen Videoplayer eines Drittanbieters in Ihre Anwendung zu integrieren. Allerdings funktioniert der Videoplayer anders und verfügt über eine andere Methodenschnittstelle als von Ihrer Anwendung erwartet. In diesem Fall könnten Sie das Adaptermuster verwenden, um eine Wrapper-Klasse um den Videoplayer herum zu erstellen und so den Code von Drittanbietern mit Ihrem vorhandenen Anwendungscode kompatibel zu machen.
Hier ist der Code, den Sie in diesem Fall verwenden würden:
// 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(); } }
Lassen Sie uns den obigen Code aufschlüsseln:
Auf diese Weise muss die Application-Klasse nichts über die Funktionsweise von ThirdPartyVideoPlayer wissen. Wenn Sie ThirdPartyVideoPlayer jemals durch eine andere Bibliothek ersetzen müssen, müssen Sie nur einen neuen Adapter schreiben – die Application-Klasse kann gleich bleiben. Dies ist der Hauptvorteil des Adaptermusters: Es entkoppelt Ihren Anwendungscode von den Besonderheiten von Bibliotheken Dritter.
Obwohl das Adaptermuster und das Fassadenmuster ähnlich erscheinen mögen, dienen sie unterschiedlichen Zwecken und werden in unterschiedlichen Kontexten verwendet:
Zusammenfassend lässt sich sagen, dass beide Muster eine Möglichkeit bieten, mit vorhandenem Code zu arbeiten, das Adaptermuster konzentriert sich jedoch auf die Schnittstellenkompatibilität, während sich das Fassadenmuster auf die Vereinfachung der Interaktion mit einem komplexen System konzentriert.
Während Sie hier sind, möchte ich Sie einladen, an unserem kommenden Superthis August teilzunehmen!
Diese Remote-Veranstaltung gibt Ihnen die Möglichkeit, Ihre Fähigkeiten und Kreativität unter Beweis zu stellen, indem Sie sich der Herausforderung stellen, Ihre virtuellen Interaktionen mit unseren Echtzeit-Kommunikationstools zu transformieren. Bei SuperViz haben Sie die Chance, einen Preis von 5.000 $ zu gewinnen.
Registrieren Sie sich jetzt, um Updates, Tipps und Ressourcen zu erhalten und machen Sie sich bereit zum Hacken!
Das obige ist der detaillierte Inhalt vonDesignmuster # Adaptermuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!