Singletons können ein wertvolles Hilfsmittel zur Steigerung der Performance von .NET-Programmen darstellen, vor allem dann, wenn jeweils nur ein physisches Objekt vorhanden ist. Beim herkömmlichen Programmieren würde man jedes Mal, wenn man eine bestimmte Instanz eines Objekts benötigt, eine Klasse als ein Objekt instanziieren. So würde man beispielsweise ein eigenes Produkt „12“ erstellen, wenn man Zugriff auf die Daten über Produkt „12“ benötigt.
In vielen Fällen, zum Beispiel bei einem Produktkatalog, ist jedoch eine einzelne Persistenz des Objekts in der Datenbank vorhanden, so dass jeweils nur eine Instanz des Objekts erforderlich ist. Nachfolgend soll aufgezeigt werden, wie man Objekte in Singletons konvertiert, um so die Performance und Ressourcennutzung innerhalb des .NET-Entwicklungs-Frameworks zu verbessern.
Das Konstruktor-Problem
Mit dem Aufkommen der objektorientierten Programmierung entstand auch der Ansatz, einen Konstruktor für eine Klasse zu verwenden. Das Objekt muss die Möglichkeit haben, sich selbst zu initialisieren, bevor es an das aufrufende Programm zurückgegeben wird. Dank dieses Vorgangs können interne Datenstrukturen gefüllt und konfiguriert werden.
Das Problem dabei ist nur, dass der Compiler oder die Runtime-Umgebung bereits Speicherplatz für das Objekt zugewiesen haben. Im Grunde wurde das neue Objekt also bereits erstellt und müsste nun nur noch konfiguriert werden.
Aus diesem Grund kann man keinen Konstruktor zusammen mit einem Singleton benutzen. Das Objekt wurde zum Zeitpunkt des Code-Aufrufs bereits teilweise instanziiert und somit kann für die Entwicklung kein Konstruktor eingesetzt werden. Der Konstruktor muss geschützt, privat oder intern eingerichtet werden. Danach kann man den Konstruktor von innerhalb der Klasse aus aufrufen, aber nicht direkt von außen.
Es reicht, einen einzigen Konstruktor zu erstellen, damit der standardmäßige Konstruktor nicht erstellt wird, selbst wenn der selbst erstellte Konstruktor als geschützt, privat oder intern markiert wurde. Auf diese Weise wird gewährleistet, dass kein Code außerhalb des festgelegten Rahmens das Objekt erstellen kann.
Die Rolle der statischen Methoden
Wenn der Entwickler den Konstruktor nicht benutzen kann, kann er auch kein eigenes Objekt erstellen, wodurch die Verwendung des Objekts erschwert wird. Die Nutzung von Elementen, die man nicht erstellen kann, ist sehr schwierig, weshalb man hier auf statische Methoden zurückgreifen sollte. Da diese direkt aus der Klasse heraus operieren, ist keine Instanz erforderlich. Dadurch kann der Entwickler die Methoden aufrufen, bevor er über eine Instanz der Klasse verfügt.
Die Rolle der statischen Methoden besteht darin, im internen Cache nachzusehen, ob die geforderte Instanz des Objekts existiert. Wenn ja, erhält das aufrufende Programm eine Referenz auf diese Instanz. Ist die geforderte Instanz dagegen nicht vorhanden, wird sie automatisch durch die statische Methode erstellt und im internen Cache gespeichert, worauf die Methode eine Referenz auf das Objekt zurückgibt.
Page: 1 2
Bösartige QR-Codes, die per E-Mail versendet werden, eignen sich sehr gut, um Spam-Filter zu umgehen.
Unsichere Websites und Phishing-Mails in Verbindung mit Black Friday können kauffreudigen Konsumenten zum Verhängnis werden.
Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.
Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.
Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…
Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…