Ansicht
Dokumentation

CL_TCL_OBJECT_RECYCLER - Recycling von teueren Objekten

CL_TCL_OBJECT_RECYCLER - Recycling von teueren Objekten

BAL_S_LOG - Application Log: Log header data   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Die Klasse CL_TCL_OBJECT_RECYCLER ist ein Object-Recycler für Instanzen von ABAP Objects Klassen, und wurde in Anlehnung an das Entwurfsmuster Object-Pool entwickelt. Zusätzlich verwendet diese Klasse das Entwurfsmuster Singleton. Damit wird sichergestellt, dass es je Rollbereich nur ein Object Recycler für Objekte gebe kann. Die Klasse verhält sich wie ein "Recycle Bin" für Objkte.

Das Entwurfsmuster Object-Pool sollte immer dann verwendet werden, wenn Objekte an verschiedenen Stellen in einem Programm benötigt werden, und die Initialisierung dieser Objekte sehr aufwendig und teuer ist. Es dient daher primär der Steigerung der Performance von Anwendungen. Den Preis, den man dafür zu zahlen hat, ist der höhere Bedarf an Speicherplatz, da der Garbage Colletor die Objekte im Object-Pool nicht aus dem Speicher entfernen kann.

Da Speicherplatz eine endliche Ressource ist, ermöglicht dieser Object-Recycler dem Garbage Collector die Objekte aus dem Speicher zu entfernen, falls von einem Programm mehr Speicher angefordert wird, als derzeit verfügbar ist. Man kann aber einzelne Objekte davor schützen, indem man in der Methode SEND_TO_REECYCLE_BIN den Parameter PROTECT mit dem Wert ABAP_TRUE versorgt. Dieser Schutz gilt aber nur gegenüber dem Garbage Collector!

Wie bei einem "Recycle Bin" sind die Objekte entweder innerhalb oder außerhalb des Object-Recyclers. Wenn man ein Objekt aus dem Object-Recycler entnehmen möchte, dann muss man die Methode RESTORE_FROM_RECYCLE_BIN verwenden. Diese löscht automatisch den Eintrag für das entnommene Objekt. das gilt auch dann, wenn für diesen Eintrag der Parameter PROTECT gesetzt wurde! Die Methode RESTORE_FROM_RECYCLE_BIN besitzt den Parameter KEEP, über den gesteuert werden kann, ob der Eintrag erhalten bleiben soll.

Die Instanz des Object-Recyclers eines Rollbereichs ist jederzeit über die Methode CL_TCL_OBJECT_RECYLCER=>GET_SINGLETON( ) ermittelbar.

Wenn man die Parameter in den Methoden entsprechend verwendet, dann fungiert der Object-Recycler wie ein Object-Pool. Der Default-Wert der Parameter wurde absichtlich gewählt, das die Funktion des recyceln von Objekten im Fordergrund steht. Jeder, der den Object-Recycler als Object-Pool zweckentfremdet verwendet muss sich im Klaren darüber sein, welche Risiken und Nebenwirkungen entstehen können, wenn ein und dieselbe Objektinstanz von vielen unterschiedlichen Programmen und Programmteilen verwendet wird. Diese Klasse ist kein Ersatz für "Shared Objects" Klassen! Ein umsichtiger Umgang mit dem Object-Recycler eröffnet aber neue Möglichkeiten für performante und robuste Pogramme.

Beziehungen

Das Verhalten der Methoden SEND_TO_RECYCLE_BIN, RESTORE_FROM_RECYCLE_BIN und EMPTY_RECYCLING_BIN kann durch die Implementierung des Interfaces IF_TCL_OBJECT_RECYCLER übersteuert werden. Zusätzlich kann sich das recycelte Objekt in diesen Methoden beispielsweise auf die erneute Verwendung vorbereiten. Damit können Objekte speziell auf die Verwendung mit dem Object-Recycler vorbereiten.

Beispiel

Ein einfaches Beispiel finden sie im Programm TCL_RECYLER_EXAMPLE.

Hinweise

Instanzen von Objekten können nicht Rollbereichs-übergreifend verwendet werden. Daher ist erwünscht, dass es je Rollbereich einen eigenen "Object Recycler" gibt.

Jedes Programm, welches den Object-Recycler verwendet muss darauf vorbereitet sein, dass unter Umständen eine andere Objektinstanz zurückgeliefert wird als erwartet. In solchen Fällen sollte das Objekt wieder in den Object-Recycler gestellt werden, um Folgefehler zu vermeiden. Die weitere Fehlerbehandlung ist individuell zu gestallten.

Weiterführende Informationen

Bitte lesen sie auch die Dokumentation der einzelnen Methoden.






ABAP Short Reference   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4226 Date: 20240419 Time: 202644     sap01-206 ( 93 ms )