Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in das PHP-Adaptermuster

Einführung in das PHP-Adaptermuster

怪我咯
怪我咯Original
2017-07-05 10:19:491770Durchsuche

Adaptermodus (Alias ​​Wrapper): Konvertieren Sie die Schnittstelle einer Klasse in die vom Kunden erwartete Schnittstelle einer anderen Klasse. Adapter ermöglichen die Zusammenarbeit von Klassen, deren Schnittstellen ursprünglich inkompatibel sind

Wichtige Punkte:

1. Adaptermuster wird hauptsächlich in „Situationen verwendet, in denen Sie einige vorhandene Klassen wiederverwenden möchten, die Schnittstelle jedoch nicht mit den Anforderungen der Wiederverwendungsumgebung übereinstimmt“, in Bezug auf die Wiederverwendung von Legacy-Code, Klassenbibliothek Migration usw. Sehr nützlich.

2. Das Adaptermuster verfügt über zwei Implementierungsstrukturen: Objekt Adapter und Klassenadapter. Der Klassenadapter übernimmt jedoch die Implementierungsmethode „Mehrfachvererbung “, was im Allgemeinen zu einer unerwünschten hohen Kopplung führt nicht verwendet Empfohlen. Der Objektadapter verwendet die Methode „Objektkombination“, die eher dem Geist der losen Kopplung entspricht.

Implementierung:

Einführung in das PHP-Adaptermuster

Strukturdiagramm des Klassenadaptermusters (Vererbung)

Einführung in das PHP-Adaptermuster

Struktur des Objektadaptermusters Diagramm (Kombination)

(Code-Implementierung des Objektadapters)

Ziel: Definiert die vom Client verwendete domänenspezifische Schnittstelle

public interface Target { void request();}
Adaptee: Jetzt erforderlich Angepasst vorhanden Schnittstellen

public class Adaptee{ public void specificRequest(){}}
Adapter: Passen Sie die Adaptee-Schnittstelle und die Zielschnittstelle an

public class Adapter implements Target{ public Adapter(Adaptee adaptee) { super(); this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } private Adaptee adaptee;}
Anwendbarkeit:

1. Verwenden Sie eine vorhandene Klasse, deren Schnittstelle nicht erfüllt die Bedürfnisse des Systems.

2. Sie möchten eine wiederverwendbare Klasse erstellen, die für die Arbeit mit einigen Klassen verwendet werden kann, die nicht eng miteinander verwandt sind, einschließlich einiger Klassen, die möglicherweise in Zukunft eingeführt werden. Diese Quellklassen verfügen nicht unbedingt über komplexe Schnittstellen.

3. (Für Objektadapter) Im Entwurf müssen die Schnittstellen mehrerer vorhandener Unterklassen geändert werden. Wenn Sie das Klassenadaptermuster verwenden, müssen Sie für jede Unterklasse einen Adapter erstellen praktisch.

Auswirkungen, Vor- und Nachteile:

Für Klassenadapter:

1. Verwenden Sie eine bestimmte Adapterklasse, um Adaptee und Target abzugleichen. Das Ergebnis ist, dass der Klassenadapter die Aufgabe nicht erfüllt, wenn wir eine Klasse und alle ihre Unterklassen abgleichen möchten.

2. Erlauben Sie Adapter, einige der

Verhaltensweisen von Adaptee zu überschreiben (neu zu definieren), da Adapter eine Unterklasse von Adaptee ist.

Für Objektadapter:

1 Erlauben Sie einem Adapter, mit mehreren Adaptees, d. h. dem Adaptee selbst und allen seinen Unterklassen (falls es Unterklassen gibt), gleichzeitig zu arbeiten. Der Adapter kann auch allen Adaptees gleichzeitig Funktionen hinzufügen.

2. Erschwert das Überschreiben (Neudefinieren) des Verhaltens von Adaptee. Wenn Sie die Adaptee-Methode überschreiben müssen, müssen Sie zunächst eine Unterklasse von Adaptee erstellen, um die Adaptee-Methode zu überschreiben, und diese Unterklasse dann als echte Adaptee-Quelle für die Anpassung verwenden.

Das obige ist der detaillierte Inhalt vonEinführung in das PHP-Adaptermuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn