Heim > Java > javaLernprogramm > Detaillierte Erläuterung des Grafikcodes zum Adaptermuster in Java

Detaillierte Erläuterung des Grafikcodes zum Adaptermuster in Java

黄舟
Freigeben: 2017-07-24 15:29:05
Original
1781 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich den Java-Adaptermodus vor. Der Herausgeber findet ihn recht gut. Ich werde ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor, um einen Blick darauf zu werfen

1. Konzept

Der Adaptermodus wandelt eine Schnittstelle in eine andere um, die der Kunde wünscht Schnittstelle. Es ermöglicht die Zusammenarbeit von Klassen, die ursprünglich aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten konnten.

2.UML

3

4. Beispielanalyse

Ich habe letztes Jahr einen Laptop gekauft und ihn mit einer Logitech G1-Optikhülle kombiniert. Was wirklich ärgerlich ist, ist, dass die Maus des fotoelektrischen Gehäuses über eine USB-Schnittstelle und die Tastatur über eine PS2-Schnittstelle verfügt, mein Laptop jedoch keine PS2-Schnittstelle hat. Also ging ich auf den Markt und kaufte einen Adapter.

Also habe ich mehrere Klassen abstrahiert.

1.PS2Port (PS2-Schnittstelle).

2. USBPort (USB-Schnittstelle).

3.PS2ToUSB (Objektadapter), ersetzen Sie die PS2-Schnittstelle durch eine USB-Schnittstelle.

4.TestAdapter (Testklasse), Client.

PS2Port


package com.bjpowernode.adapter; 
 
/** 
 * PS2接口,圆口 
 * @author eason 
 * 
 */ 
public interface PS2Port { 
  public void workWithPS2(); 
}
Nach dem Login kopieren

USBPort


package com.bjpowernode.adapter; 
 
/** 
 * USB接口,U口 
 * @author eason 
 * 
 */ 
public interface USBPort { 
  public void workWithUSB(); 
}
Nach dem Login kopieren

PS2ToUSB


package com.bjpowernode.adapter; 
 
/** 
 * 对象适配器 
 * 将PS2接口装换成USB接口 
 * 所以此类类型是USB接口(implements USBPort) + 成员变量ps2Port 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort{ 
 
  private PS2Port ps2Port; 
   
  public PS2ToUSB(PS2Port ps2Port) { 
    this.ps2Port = ps2Port; 
  } 
   
  @Override 
  public void workWithUSB() { 
    System.out.println("转换的关键在这里,本来是"); 
    ps2Port.workWithPS2(); 
    System.out.println("经过你的转换,现在是USB工作中"); 
  } 
   
}
Nach dem Login kopieren

TestAdapter


package com.bjpowernode.adapter; 
 
/** 
 * 测试类 
 * client 
 * @author eason 
 * 
 */ 
public class TestAdapter { 
 
  public static void main(String[] args) { 
    //我现在有一个PS2接口 
    PS2Port ps2Port = new PS2Port() { 
      @Override 
      public void workWithPS2() { 
        System.out.println("PS2工作中"); 
      } 
    }; 
     
    //但是我需要的是一个USB接口啊,对我(client)来说,我只认识USB接口 
    //经过PS2ToUSB的转换,PS2接口变成了USB接口 
    USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); 
     
    ps2ToUsbPort.workWithUSB(); 
     
  } 
 
}
Nach dem Login kopieren

5. Objektadapter und Klassenadapter

Der obige Adapter ist ein Objektadapter. Schauen wir uns noch einmal die Klassenadapter an.

PS2ToUSB, einfach kurz simulieren. Da Java keine Mehrfachvererbung zulässt, gibt es in Java keinen Klassenmustercode, sondern nur Ideen.


package com.bjpowernode.adapter; 
 
/** 
 * 类适配器 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort, PS2Port{ 
 
  //重写workWithUSB,把工作交给workWithPS2 
  @Override 
  public void workWithUSB() { 
    workWithPS2(); 
  } 
   
}
Nach dem Login kopieren

Der Unterschied besteht darin, dass der Objektadapter die vom Client gewünschte Schnittstelle (USB) implementiert und intern ein angepasstes Objekt (PS2) vorhanden ist. Die Anpassungsfunktion wird durch Kombination realisiert. Der Klassenadapter implementiert die vom Client gewünschte Schnittstelle (USB) und die angepasste Objektschnittstelle (PS2) und implementiert die Anpassungsfunktion durch Vererbung.

6. Nutzungsszenarien und Nutzungserfahrung

1. Ich hoffe, einige vorhandene Klassen wiederzuverwenden, aber die Schnittstelle ist Es steht im Widerspruch zu den Anforderungen der Wiederverwendungsumgebung.

2. Tatsächlich ist der Adaptermodus etwas hilflos. Im frühen Design sollten wir den Adaptermodus nicht berücksichtigen, sondern eine Umgestaltung der einheitlichen Schnittstelle in Betracht ziehen.

7. Adaptermuster und Dekoratormuster

Sie können beide zum Umwickeln von Objekten verwendet werden das

1. Adaptermodus: Konvertieren Sie eine Schnittstelle in eine andere.

2. Dekorationsmuster: Ändern Sie nicht die Benutzeroberfläche, sondern fügen Sie nur Verantwortlichkeiten hinzu.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Grafikcodes zum Adaptermuster in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage