Das Adaptermuster (Adapter) ist wie folgt definiert: Konvertieren Sie die Schnittstelle einer Klasse in eine andere vom Kunden gewünschte Schnittstelle, sodass Klassen, die aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten können, funktionieren können zusammen . Das Adaptermuster ist in zwei Typen unterteilt: Klassenstrukturmuster und Objektstrukturmuster. Ersteres weist einen höheren Grad an Kopplung zwischen Klassen auf und erfordert, dass Programmierer die interne Struktur relevanter Komponenten in der vorhandenen Komponentenbibliothek verstehen wird teilweise relativ selten genutzt.
1. Der Client kann die Zielschnittstelle transparent über den Adapter aufrufen.
2. Vorhandene Klassen werden nicht wiederverwendet.
3. Entkoppeln Sie die Zielklasse und die Adapterklasse, um das Problem inkonsistenter Schnittstellen zwischen der Zielklasse und der Adapterklasse zu lösen.
4. Halten Sie in vielen Geschäftsszenarien das Öffnungs- und Schließprinzip ein.
1. Der Adapter-Schreibprozess muss vollständig in Verbindung mit dem Geschäftsszenario berücksichtigt werden, was die Komplexität des Systems erhöhen kann.
2. Es erhöht die Schwierigkeit des Codelesens und verringert die Lesbarkeit des Codes. Übermäßiger Einsatz von Adaptern führt zu einem Chaos im Systemcode.
Klassenadaptermuster: Es kann durch Mehrfachvererbung implementiert werden. Beispielsweise kann C++ eine Adapterklasse definieren, um sowohl die Geschäftsschnittstelle des aktuellen Systems als auch die Komponentenschnittstellen zu erben, die bereits in der vorhandenen Komponentenbibliothek vorhanden sind. Java unterstützt keine Mehrfachvererbung. Sie können jedoch eine Adapterklasse definieren, um die Geschäftsschnittstelle des aktuellen Systems zu implementieren und gleichzeitig Komponenten zu erben, die bereits in der vorhandenen Komponentenbibliothek vorhanden sind.
Objektadaptermuster: Sie können Komponenten, die in der vorhandenen Komponentenbibliothek implementiert wurden, in die Adapterklasse einführen, die auch die Geschäftsschnittstelle des aktuellen Systems implementiert. Lassen Sie uns nun ihre Grundstruktur vorstellen.
Fall: Hongmao verwendet Feuerkristalle, um das Feuertanz-Wirbelwindschwert Qi zu aktivieren
Zielschnittstelle: Changhong-Schwert Qi
Adaptee-Klasse: Feuertanz-Wirbelwindschwert Qi
Adapter (Adapter) Kategorie: Feuerkristall
Hongmao kann derzeit nur das Changhong-Schwert-Qi aktivieren, aber wenn er das Feuertanz-Wirbelwind-Schwert-Qi aktivieren möchte
, kann er nur die Kraft des Feuerkristalls nutzen, um das Changhong-Schwert-Qi in das Feuertanz-Wirbelwind-Schwert-Qi umzuwandeln
Hinweis: Ich bin hier, um das Fire Dance Whirlwind Sword Qi an den Changhong Sword Qi
deklariert eine Schnittstelle für das Changhong Sword Qi, einschließlich einer abstrakten Methode zur Aktivierung des Changhong Sword Qi
public interface Chang { void chang(); }
Die Kategorie „Feuertanz-Wirbelwind-Schwert-Qi“ deklariert eine Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi.
public class Huo { public void huo() { System.out.println("火舞旋风剑气"); } }
Die Fire Crystal-Klasse erbt die Fire Dance Whirlwind Sword Qi-Klasse (Zweck: Nach der Vererbung können Sie die Methoden in der Klasse verwenden) und implementiert die Changhong Sword Qi-Schnittstelle (Zweck: um die Aktivierung von zu realisieren Changhong-Schwert-Qi-Methode). Unter den Methoden zur Aktivierung des Changhong-Schwert-Qi wird die Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi verwendet.
public class JingShi extends Huo implements Chang { @Override public void chang() { huo(); } }
public class Demo { public static void main(String[] args) { Chang haha = new JingShi(); haha.chang(); } }
Deklariert eine Schnittstelle von Changhong Jianqi, einschließlich einer abstrakten Methode zum Aktivieren von Changhong Jianqi
public interface Chang { void chang(); }
Fire Dance. Whir lwind Schwert Qi-Typ, deklariert eine Methode zur Aktivierung des Fire Dance Whirlwind Sword Qi.
public class Huo { public void huo() { System.out.println("火舞旋风剑气"); } }
Die Feuerkristallklasse implementiert die Changhong-Schwert-Qi-Schnittstelle, deklariert die Attribute eines Feuertanz-Wirbelwind-Schwert-Qi und implementiert die Methode zur Stimulierung des Changhong-Schwert-Qi. Die Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi ist in der Methode zur Aktivierung des Changhong-Schwert-Qi enthalten.
public class JingShi implements Chang { private Huo huo; JingShi() { } JingShi(Huo huo) { this.huo = huo; } @Override public void chang() { huo.huo(); } }
Neues Qi-Objekt „Feuertanz-Wirbelwindschwert“, neues Objekt „Feuerkristallstein“ und Übergabe des Qi-Objekts „Feuertanz-Wirbelwindschwert“ an das Objekt „Feuerkristallstein“.
public class Demo { public static void main(String[] args) { Huo huo = new Huo(); Chang haha = new JingShi(huo); haha.chang(); } }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Adaptermuster des Java-Entwurfsmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!