Heim >Backend-Entwicklung >PHP-Tutorial >Was ist das Adaptermuster und welche Anwendungsszenarien gibt es?
Das
Adapter-Muster ist ein strukturelles Entwurfsmuster und wird auch häufig verwendet.
Adaptermuster
Das Adaptermuster ist leicht zu verstehen. Aus der wörtlichen Bedeutung wissen wir, dass es zur Anpassung verwendet wird. Seine Aufgabe besteht darin, die ursprünglich inkompatible Schnittstelle in die vom Kunden erwartete Schnittstelle umzuwandeln, sodass Klassen, die aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten können, zusammenarbeiten können. Um es anhand eines Beispiels aus dem täglichen Leben zu erklären: Wir wissen, dass es viele Arten von Ladeanschlüssen für Mobiltelefone gibt, große Löcher und kleine Löcher für Apple und Android. Wenn unser Telefon keinen Strom mehr hat und wir uns ein Ladegerät ausleihen, stellen wir fest, dass dies der Fall ist ist nicht kompatibel mit unserem eigenen Telefonloch. Mittlerweile gibt es Adapter mit Ladegeräten auf dem Markt. Mit dem Adapter können wir unsere Mobiltelefone aufladen.
Drei Rollen im Adapter: abstrakte Zielklasse (Target), Adapter (Adaptee), Adapter (Adaptor)
Klassenadapter und Objektadapter
Adapter werden in Klassenadapter und Objektadapter unterteilt. Lassen Sie uns sie anhand eines Beispiels erklären.
Das Folgende ist ein Beispiel für einen Klassenadapter:
class ITarget { function f1(); function f2(); function f3(); } class Adaptee { public function f1(){……}; public function f2(){……}; public function a(){……}; } // 类适配器,基于继承 class Adaptor extends Adaptee { public function f3 () { // 重新实现f3 } }
Das Folgende ist ein Beispiel für einen Objektadapter
class ITarget { function f1(); function f2(); function f3(); } class Adaptee { public function a1(){……}; public function b1(){……}; public function c1(){……}; } // 对象适配器,基于组合 class Adaptor { private $adaptee = null; public function __contrust (Adaptee $adaptee) { $this->adaptee = $adaptee; …… } public function f1() { $this->adaptee->a1(); } public function f2() { // 重新实现f2 } public function f3 () { $this->adaptee->a3(); } }
Wie sollten wir zwischen diesen beiden Implementierungsmethoden wählen? Wenn die meisten Methoden im Adapter wiederverwendet werden können, entscheiden Sie sich für die Verwendung eines Klassenadapters, andernfalls verwenden Sie einen Objektadapter. Objektadapter sind flexibler.
Anwendungsszenarien
Im Folgenden werden die wichtigsten Verwendungsszenarien des Adapters vorgestellt
Verpackung ist fehlerhaft Das Schnittstellendesign
vereinheitlicht das Schnittstellendesign mehrerer Klassen. Beispielsweise verfügt ein Zahlungssystem über drei verschiedene Zahlungsmethoden: WeChat-Zahlung, Alipay-Zahlung und Online-Banking-Zahlung Die Methoden sind alle unterschiedlich, daher können wir das Adaptermuster verwenden, um ihnen eine einheitliche Methode für die externe Verwendung zu geben. Auf diese Weise ist es für uns sehr bequem, sie aufzurufen.
Kompatibel mit der alten Version der Schnittstelle, diese wird häufig bei unseren System-Upgrades verwendet.
Das obige ist der detaillierte Inhalt vonWas ist das Adaptermuster und welche Anwendungsszenarien gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!