Tatsächlich sollte jeder mit den drei Worten „Adapter“ vertraut sein. Wir wissen, dass das iPhone von Apple keinen Ladestecker mehr enthält. Daher können wir dieses Datenkabel nicht alleine zum Anschließen an 220 V verwenden Da es auf der Platine aufgeladen wird, müssen wir einen Adapter kaufen, um die Platine mit dem Mobiltelefon zu verbinden.
Tatsächlich kann es beim Softwaredesign auch vorkommen, dass die zu entwickelnden Komponenten mit bestimmten Geschäftsfunktionen bereits in der vorhandenen Komponentenbibliothek vorhanden sind, diese jedoch nicht mit den Schnittstellenspezifikationen des aktuellen Systems kompatibel sind -entwickelt, werden die Kosten sehr hoch sein, dann kann die Verwendung des Adaptermodus diese Probleme gut lösen.
Adaptermuster: Konvertieren Sie die Schnittstelle einer Klasse in eine andere vom Kunden gewünschte Schnittstelle, sodass Klassen, die aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten können, zusammenarbeiten können.
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. Daher ist die Anwendung relativ gering.
Vorteile:
Der Client kann die Zielschnittstelle transparent über den Adapter aufrufen
Vorhandene Klassen wiederverwenden, Programmierer müssen den Originalcode nicht ändern und vorhandene wiederverwenden Klassen Die Adapterklasse
entkoppelt die Zielklasse und die Adapterklasse und löst so das Problem inkonsistenter Schnittstellen zwischen der Zielklasse und der Adapterklasse
Es entspricht dem Öffnungs- und Schließprinzip in vielen Geschäftsszenarien
Nachteile:
Der Adapter-Schreibprozess muss vollständig auf der Grundlage des Geschäftsszenarios berücksichtigt werden, was die Komplexität des Systems erhöhen kann.
Erhöht die Schwierigkeit des Code-Lesens und verringert die Code-Lesbarkeit Machen Sie den Systemcode chaotisch.
Die Struktur des Objektadaptermusters:
5. Code-Implementierung des Adaptermodus
Wir haben jetzt einen dreiphasigen Laptop-Stecker, den wir jetzt verwenden müssen Zum Aufladen benötigen wir einen zweiphasigen Stecker. Dieser Stecker ist mit einem zweiphasigen Adapter ausgestattet:
Dreiphasige Steckdosenschnittstelle:
/** * 三相插座接口 */ public interface ThreePlugIf { //使用三相电流供电 public void powerWithThree(); }
Zweiphasige Steckdose nach nationalem Standard:
/** * 国标的二相插座 */ public class GBTowPlug { public void powerWithTwo(){ System.out.println("使用二相电流供电"); } }
/** * 笔记本 */ public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug){ this.plug = plug; } //使用插座充电 public void charge(){ plug.powerWithThree(); } }
/** * 三相转二相的插座适配器 */ public class TwoPlugAdapter implements ThreePlugIf { private GBTowPlug plug; public TwoPlugAdapter(GBTowPlug plug) { this.plug = plug; } @Override public void powerWithThree() { System.out.println("通过转换"); plug.powerWithTwo(); } }
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); } }
Der Adapter, der die Kombinationsmethode verwendet, wird als Objektadapter bezeichnet
Funktionen:
Kombinieren Sie den „Adapter“ als Objekt im Adapter. Ändern Sie in der Klasse die Zielschnittstelle und packen Sie sie in den Adapter.
B Verwenden Sie Vererbung, um den Adapter zu implementieren:
Erben Sie den Adapter :
Testklasse:/** * 采用继承方式的插座适配器 */ public class TwoPlugAdapterExtends extends GBTowPlug implements ThreePlugIf{ @Override public void powerWithThree() { System.out.println("借助继承适配器"); this.powerWithTwo(); } }Nach dem Login kopieren
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); //使用继承方法 three = new TwoPlugAdapterExtends(); nb = new NoteBook(three); nb.charge(); } }
Ausgabe:
Durch KonvertierungZweiphasen-Stromversorgung verwenden
Mit Hilfe eines Vererbungsadapters
Zweiphasen-Stromversorgung verwendenDie Vererbungsmethode wird als Klasse bezeichnet AdapterEigenschaften:Durch Mehrfachvererbung inkompatibler Schnittstellen wird die Übereinstimmung der Zielschnittstelle erreicht, und eine einzelne Klasse wird zur Implementierung der Anpassung verwendet6 Anwendungsszenarien des AdaptermustersVerwenden Sie von Dritten bereitgestellte Komponenten, aber die Definition der Komponentenschnittstelle unterscheidet sich von der Schnittstellendefinition von Ihnen benötigtDas zuvor entwickelte System verfügt über Klassen, die die funktionalen Anforderungen des neuen Systems erfüllen, aber seine Schnittstelle stimmt nicht mit der Schnittstelle des neuen Systems überein
Das obige ist der detaillierte Inhalt vonWie versteht und verwendet man das Java-Adaptermuster?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!