Im Allgemeinen ist eine Wrapper-Klasse eine Klasse, die die Funktionalität einer anderen Klasse oder Komponente "umschließt" oder "kapselt". Diese sind nützlich, indem eine Abstraktionsebene von der Implementierung der zugrunde liegenden Klasse oder Komponente bereitgestellt wird. Beispielsweise können Wrapper-Klassen, die COM-Komponenten umschließen, den Prozess des Aufrufs der COM-Komponente verwalten, ohne den aufrufenden Code damit zu belästigen. Sie können auch die Verwendung des zugrunde liegenden Objekts vereinfachen, indem sie die Anzahl der beteiligten Schnittstellenpunkte reduzieren. Dies führt häufig zu einer sichereren Verwendung der zugrunde liegenden Komponenten.
Genau so, wie es sich anhört: Eine Klasse, die die Funktionalität einer anderen Klasse oder API in eine einfachere oder lediglich andere API "einschließt".
Siehe: Adaptermuster , Fassadenmuster
quelle
Wrapper-Klassen bieten eine Möglichkeit, primitive Typen als Objekte zu verwenden. Für jedes Grundelement haben wir eine Wrapper-Klasse wie:
Integer und Byte sind die Wrapper-Klassen von primitivem int und Byte. Es gibt Zeiten / Einschränkungen, in denen Sie die Grundelemente als Objekte verwenden müssen, sodass Wrapper-Klassen einen Mechanismus bereitstellen, der als Boxing / Unboxing bezeichnet wird.
Das Konzept kann durch das folgende Beispiel als gut verstanden werden
Auf diese Weise können wir den Wrapper-Klassentyp verwenden, um ihn auch in andere primitive Typen zu konvertieren. Diese Art der Konvertierung wird verwendet, wenn Sie einen primitiven Typ in ein Objekt konvertieren und damit auch andere primitive Elemente abrufen müssen. Für diesen Ansatz müssen Sie jedoch einen großen Code schreiben. Dasselbe kann jedoch mit der einfachen Casting-Technik erreicht werden, da das Code-Snippet wie folgt erreicht werden kann
Obwohl der doppelte Wert explizit in einen ganzzahligen Wert konvertiert wird, der auch als Downcasting bezeichnet wird.
quelle
Eine Wrapper-Klasse muss nicht unbedingt eine andere Klasse umbrechen. Es kann sich um eine API-Klassenumbruchfunktion in einer DLL-Datei handeln.
Zum Beispiel kann es sehr nützlich sein, eine DLL-Wrapper-Klasse zu erstellen, die sich um die gesamte Initialisierung und Bereinigung der DLL kümmert und Klassenmethoden erstellt, die Funktionszeiger umschließen, die z
GetProcAddress()
.Prost !
quelle
Eine Wrapper-Klasse ist eine Klasse, die genau wie ihren Namen etwas anderes "umschließt".
Die formalere Definition wäre eine Klasse, die das Adaptermuster implementiert . Auf diese Weise können Sie einen Satz von APIs in eine besser verwendbare, lesbare Form ändern. Wenn Sie beispielsweise in C # die native Windows-API verwenden möchten, ist es hilfreich, sie in eine Klasse zu packen, die den .NET-Entwurfsrichtlinien entspricht.
quelle
Es gibt verschiedene Entwurfsmuster, die als Wrapper-Klassen bezeichnet werden können.
Siehe meine Antwort auf " Wie unterscheiden sich die Proxy-, Decorator-, Adapter- und Bridge-Muster? "
quelle
Es kann auch hilfreich sein zu beachten, dass in einigen Umgebungen vieles, was Wrapper-Klassen tun könnten, durch Aspekte ersetzt wird.
BEARBEITEN:
Im Allgemeinen wird ein Wrapper die Funktionsweise des Wrappees erweitern, ohne sich Gedanken über die Implementierung des Wrappees machen zu müssen. Andernfalls macht es keinen Sinn, den Wrapper zu verpacken oder die umhüllte Klasse zu erweitern. Ein typisches Beispiel ist das Hinzufügen von Zeitinformationen oder Protokollierungsfunktionen um eine andere Dienstschnittstelle herum, anstatt sie jeder Implementierung dieser Schnittstelle hinzuzufügen.
Dies ist dann ein typisches Beispiel für die Aspektprogrammierung. Anstatt eine Schnittstellenfunktion Funktion für Funktion durchzugehen und die Boilerplate-Protokollierung hinzuzufügen, definieren Sie in der Aspektprogrammierung einen Pointcut, der eine Art regulärer Ausdruck für Methoden ist, und deklarieren dann Methoden, die vor, nach oder um alle übereinstimmenden Methoden ausgeführt werden sollen der pointcut. Es ist wahrscheinlich fair zu sagen, dass die Aspektprogrammierung eine Art Verwendung des Decorator-Musters ist, für das auch Wrapper-Klassen verwendet werden können, aber dass beide Technologien andere Verwendungszwecke haben.
quelle
Die Wrapper-Klasse ist eine Klasse, die die andere Klasse umschließt und die Abstraktion zwischen dem Client und der ursprünglichen Klasse bereitstellt, die umbrochen wird.
quelle
Eine Wrapper-Klasse ist normalerweise eine Klasse, die ein Objekt als Privateigenschaft hat. Der Wrapper implementiert die API dieses privaten Objekts und kann daher als Argument übergeben werden, wo das private Objekt dies tun würde.
Angenommen, Sie haben eine Sammlung und möchten eine Art Übersetzung verwenden, wenn Objekte hinzugefügt werden. Sie schreiben eine Wrapper-Klasse, die alle Methoden der Sammlung enthält. Wenn add () aufgerufen wird, übersetzt der Wrapper die Argumente, anstatt sie nur an die private Sammlung zu übergeben.
Der Wrapper kann überall dort verwendet werden, wo eine Sammlung verwendet werden kann, und das private Objekt kann weiterhin andere Objekte enthalten, die darauf verweisen und es lesen.
quelle
Eine Wrapper-Klasse ist eine Klasse, die zum Umschließen einer anderen Klasse verwendet wird, um eine Ebene der Indirektion und Abstraktion zwischen dem Client und der ursprünglichen Klasse, die umbrochen wird, hinzuzufügen.
quelle
Die Wrapper-Klasse ist ein Wrapper um einen primitiven Datentyp. Es repräsentiert primitive Datentypen in ihren entsprechenden Klasseninstanzen, z. B. kann ein boolescher Datentyp als boolesche Klasseninstanz dargestellt werden. Alle primitiven Wrapper-Klassen in Java sind unveränderlich, dh sobald einer Wrapper-Klasseninstanz ein Wert zugewiesen wurde, kann er nicht weiter geändert werden.
quelle
Die Java-Programmierung bietet eine Wrapper-Klasse für jeden primitiven Datentyp, um einen primitiven Datentyp in ein entsprechendes Objekt der Wrapper-Klasse zu konvertieren.
quelle
Es ist keine leichte Aufgabe, eine Wrapper-Klasse zum Wohlbefinden zu bringen. Es ist auch keine leichte Aufgabe, eine Wrapper-Klasse zu verstehen, wie sie von einigen anderen entworfen wurde. Weil es eine Idee ist, kein Code. Nur wenn Sie die Idee verstehen, können Sie Wrapper verstehen.
quelle
Wrapper-Klassen wurden ins Leben gerufen, um ein Grundbedürfnis von Programmierern zu erfüllen - dh um primitive Werte zu verwenden, wo nur Objekte erlaubt sind. Wie der Name schon sagt, umschließen Wrapper-Klassen einen primitiven Wert und halten den Wert in einem Objekt. Alle Orte, an denen Grundelemente nicht zulässig waren, wie Generika, Hashmap-Schlüssel, Arraylisten usw., haben Programmierer nun die Möglichkeit, diese Grundelemente als entsprechende Wrapper-Typen anzugeben.
Darüber hinaus verfügen diese Wrapper-Typen über eine Reihe von Dienstprogrammmethoden zum Konvertieren von primitiven Typen in entsprechende Wrapper-Typen und zurück sowie von Strings zu Wrapper-Typen und zurück.
Ich habe in meinem Blog einen ausführlichen Artikel über Wrapper-Klassen geschrieben, in dem das Konzept der Wrapper-Typen ausführlich erläutert wird - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Disclosure - Dieser Blog gehört mir)
quelle
Ich habe derzeit eine Wrapper-Klasse für mein Projekt und die wichtigsten Vorteile verwendet (nur ein einziger Vorteil, um die Themenerklärung zu erweitern):
Ausnahmebehandlung: Meine Hauptklasse, die von einer anderen Klasse umbrochen wird, verfügt über Methoden, die Ausnahmen auslösen, falls diese auftreten. Daher habe ich eine Wrapper-Klasse erstellt, die die Ausnahmen behandelt und sie sofort protokolliert. In meinem Hauptbereich gibt es also keine Ausnahmebehandlung. Ich rufe einfach eine Methode auf und mache etwas.
Einfache Verwendung: Ich kann das Objekt einfach initiieren. Normalerweise besteht die Startphase aus vielen Schritten.
Lesbarkeit des Codes: Wenn ein anderer Programmierer meinen Code öffnet, erscheint der Code sehr klar und leicht zu manipulieren.
Ausblenden der Details: Wenn Sie eine Klasse generieren, die ein anderer Programmierer verwenden wird, können Sie die Details wie "Fehlerbehandlung, Ausnahmebehandlung, Protokollierung von Nachrichten usw." umbrechen, damit der Programmierer sie nicht verarbeiten muss Das Chaos nutzt einfach die Methoden.
quelle
Eine Wrapper-Klasse ist eine Klasse, die ausschließlich dazu dient, etwas zu halten und einige Funktionen hinzuzufügen. In Java sind die Grundelemente (wie Ints, Floats, Chars ...) keine Objekte. Wenn Sie sie also wie eines behandeln möchten, müssen Sie eine Wrapper-Klasse verwenden. Angenommen, Sie möchten einen Vektor mit Ints erstellen. Das Problem ist, dass ein Vektor nur Objekte und keine Grundelemente enthält. Sie werden also alle Ints in einen Integer-Wrapper einfügen und diesen verwenden. Beispiel:
quelle
Ein Wrapper ist eine Klasse, die zur Kommunikation zwischen zwei verschiedenen Anwendungen zwischen verschiedenen Plattformen verwendet wird
quelle