Java -Adaptermodus
Vor kurzem habe ich Java -Grundlagen gelernt und habe viele Zweifel, als ich Adapter lernte. Ich habe die Informationen online durchsucht und viele Informationen über Adapter gefunden, aber dieser Artikel ist gut. Hier ist ein Datensatz, Sie können lesen, was Sie brauchen.
Das Adaptermuster besteht darin, die Schnittstelle einer Klasse in eine andere Schnittstelle umzuwandeln, die der Client erwartet, damit zwei Klassen, deren ursprüngliche Schnittstellen nicht übereinstimmen und nicht zusammenarbeiten können, zusammenarbeiten können. Funktionell gesehen haben Klassen, die mit diesen Schnittstellen nicht kompatibel sind, im Allgemeinen die gleichen oder ähnlichen Funktionen. Normalerweise lösen wir diese Art von Interface -Inkompatibilität, indem wir die Schnittstelle dieser Klasse ändern. Wenn wir jedoch nicht bereit sind, die ursprüngliche Schnittstelle für eine Anwendung zu ändern, oder wir haben überhaupt nicht den Quellcode des Objekts, wird der Adaptermodus nützlich.
Vorteile des Adapters:
1. Entkoppeln Sie die Zielklasse und die Adapterklasse
2. Erhöhen Sie die Transparenz und Wiederverwendbarkeit der Klasse, verringern Sie die spezifische Implementierung in der Adapterklasse, die für die Client -Klasse transparent ist, und verbessert die Wiederverwendbarkeit des Adapters.
3. sowohl Flexibilität als auch Expansion sind sehr gut und sie entsprechen dem Prinzip des Öffnens und Schließens
Die am Adapter beteiligten Rollen umfassen Folgendes:
Ziel: Definiert eine bestimmte Schnittstelle, die von einem Client verwendet wird.
Client: Verwenden Sie die Zielschnittstelle, um mit Objekten zusammenzuarbeiten, die mit der Zielschnittstelle übereinstimmen.
Adaptier: Eine vorhandene Schnittstelle, die angepasst werden muss.
Adapter: Verantwortlich für die Konvertierung von Adaptierten in die Schnittstelle von Target. Adapter sind eine konkrete Klasse, die der Kern dieses Musters ist.
Adapter sind in zwei Typen unterteilt: Klassenadapter und Objektadapter, die nachstehend ausführlich beschrieben werden.
Klassenadapter
Der sogenannte Klassenadapter bezieht sich auf den Adapteradapter, der unseren Adapter-Adapter und die Implementierung des Zielschnittstellenziels erbt. Da es sich um ein einzelnes Vererbung in Java handelt, kann dieser Adapter nur dem ererbten Adapter -Adapter -Adapter dienen. Der Code ist wie folgt:
Adapttee
Paket com.bluemsun.classAdapter; public class Person {private int id; privater Zeichenfolge Name; / *** Person kann jetzt nur Englisch sprechen*/ public void sayeglish () {System.out.println ("Person kann Englisch sagen!"); } /*** Setter, Getter auslassen. */}Zielschnittstelle (Ziel)
Paket com.bluemsun.ClassAdapter;/*** Das Ziel verlangt, dass diese Person Englisch, Französisch und Japanisch sprechen kann. Aber jetzt kann Person nur Englisch sprechen. void sagtfremch (); void sagtjapanese ();}
Adapter
Paket com.bluemsun.classAdapter;/*** Klassenadapter, da es Person erbt und Java nur in einzelner Erben erben kann, dient dieser Adapter nur der Personklasse* Mit diesem Adapter können die Personklasse die von der Zielschnittstelle angegebenen Methoden implementieren, ohne den Quellcode zu ändern. SaysFrench () {System.out.println ("Person kann Französisch sagen!"); } @Override public void sagtjapanese () {System.out.println ("Person kann Japanisch sagen!"); }}Kunde
Paket com.bluemsun.classAdapter; public class test {public static void main (String [] args) {target_person Person = new Adapter_Person (); Person.Sayenglish (); Person.Sayfrench (); Person.Sayjapanese (); }}Die oben genannten einfachen Codes zeigen die Rolle von Klassenadaptern. Wie wir am Anfang sagten, kann dieser Adapteradapter nur der Personklasse dienen. Zu diesem Zeitpunkt fragen Sie sich vielleicht, ob ich mich an viele Klassen anpassen muss, dann muss ich einen Adapter für jede Klasse schreiben, an die sich anpassen muss? Gibt es einen flexibleren Weg? Die Antwort lautet: Ja! Dies ist der Objektadapter, über den wir unten sprechen.
Objektadapter
Der sogenannte Objektadapter bedeutet einfach, dass der Adapter unsere Zielschnittstelle implementiert, aber nicht die Klassen erbt, die angepasst werden müssen. Stattdessen wird es angepasst, indem der Konstruktor des Adapters übergeht. Der Code lautet wie folgt: (Ziel, Adaptierte wie oben)
Adapter
Paket com.bluemsun.objectdapter; import com.bluemsun.classAdapter.person; com.bluemsun.classAdapter.target_person;/** * Objektadapter, im Gegensatz zu Klasse -Adaptern, die Objekt -Adapter anpassen können, können mehrere Quellen an das Ziel anpassen. Person; // Die Person der Adaptiertenklasse im Konstruktor public adapter_person (Person Person) {this.person = Person; } // implementieren Sie sayenglish () in der Zielschnittstelle-call sayeglish () in apapere @Override public void sayEnglish () {this.person.sayenglish (); } // andere Methoden in der Schnittstelle implementieren @Override public void sayfremch () {System.out.println ("Person kann Französisch sagen!"); } @Override public void sagtjapanese () {System.out.println ("Person kann Japanisch sagen!"); }}Kunde
Paket com.bluemsun.objectDapter; import com.bluemsun.classAdapter.person; import com.bluemsun.classAdapter.target_person; public class test {public static void main (String [] args) {target_person person = new adapter_person (new Person () (); Person.Sayenglish (); Person.Sayfrench (); Person.Sayjapanese (); }}Objektadapter können sich mit Anpassungen an mehrere Klassen anpassen. Geben Sie einfach verschiedene Klassen mit Anpassungen im Konstruktor des Adapters vorbei. Flexibilität.
Vorteile von Klassenadaptern:
1. Da die Adapterklasse eine Unterklasse der Adapterklasse ist, können einige Adaptermethoden in der Adapterklasse ersetzt werden, wodurch der Adapter flexibler wird.
Nachteile von Klassenadaptern:
1. Für Sprachen wie Java und C#, die das multiplige Erbe nicht unterstützen, kann höchstens eine Adapterklasse an mindestens einer Adapterklasse gleichzeitig angepasst werden, und die Ablaufklasse der Zielablauf kann nur eine Schnittstelle und keine Klasse sein. Die Verwendung hat bestimmte Einschränkungen. Es kann nicht gleichzeitig an eine Adapterklasse und ihre Unterklasse an die Zielschnittstelle angepasst werden.
Vorteile von Objektadaptern:
1. Anpassen mehrerer verschiedener Adapter an dasselbe Ziel, dh derselbe Adapter kann sowohl die Adapterklasse als auch ihre Unterklasse an die Zielschnittstelle anpassen.
Nachteile von Objektadaptern:
1. Im Vergleich zum Klassenadaptermodus ist es nicht einfach, die Adapterklasse zu ersetzen.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!