Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 15843|Antwort: 0

[Quelle] Analyse statischer Methoden und Singleton-Muster

[Link kopieren]
Veröffentlicht am 10.10.2019 18:15:05 | | |
Wir haben oft solche Verwirrungen in der Programmierung: Manche Funktionen werden mit Singletons gelöst, andere mit statischen Methoden. Wie sind also die Prinzipien und Anwendungsszenarien von statischen Methoden und Singletons? Lassen Sie uns das heute klarstellen.

1. Schauen wir uns zunächst den Unterschied zwischen statischen und nicht-statischen Methoden an?

        Viele Programmierer haben das Verständnis, dass statische Methoden zuerst laden, nicht-statische Methoden später, statische Methoden immer im Speicher existieren und nicht-statische Methoden nicht. Daher wird empfohlen, eine nicht-statische Methode zu verwenden. Zunächst einmal ist es falsch zu betonen, dass dieses Verständnis falsch ist.

        Zunächst analysieren wir aus dem Speicher: Wenn die Anwendung initialisiert wird, ist die CLR (CLR ist Common Language Runtime) ebenfalls eine Laufzeitumgebung wie die Java-Virtualmachine, die für das Ressourcenmanagement (Speicherzuweisung und Garbage Collection usw.) verantwortlich ist und die notwendige Trennung zwischen der Anwendung und dem zugrunde liegenden Betriebssystem sicherstellt. Die CLR hat zwei verschiedene Übersetzungsnamen: Common Language Runtime und Common Language Runtime. Weist jedem Prozess im verfügbaren Raum des Prozesses, dem verwalteten Heap, einen Adressraum zu. Der verwaltete Heap ist in mehrere Regionen unterteilt, von denen die wichtigsten der Garbage Collection Heap (GC Heap) und der Loader-Heap (Loader Heap) sind, der zur Speicherung von Objektinstanzen verwendet wird und vom GC verwaltet wird. Die wichtigsten Informationen, die Loader Heap über die MethodTable-Tabelle speichert, sind metadatenbezogene Informationen wie Basistypen, statische Felder, Implementierungsschnittstellen und alle Methoden. Loader Heap akzeptiert keine GC-Kontrolle, und sein Lebenszyklus reicht von der Entstehung bis zur Zerstörung. Mit anderen Worten: Sobald eine Klasse geladen ist, werden sowohl statische als auch nicht-statische Methoden dieser Klasse in der MethodTab-Tabelle von Load Heap ohne GC-Steuerung gespeichert und sind alle für die erste Last im Speicher ansässig.

        Was ist der Unterschied zwischen einer statischen und einer nicht-statischen Methode? Der Unterschied besteht darin, dass beim Erstellen eines Objekts die statische Methode nur eine Kopie hat, während die nicht-statische Methode für jedes neue Objekt eine Kopie der Informationen über diese Instanz auf GC Heap kopiert und gleichzeitig das neue Objekt auf den Stack legt. Die Adresse, auf die der Stack-Zeiger zeigt, ist die Speicheradresse, die gerade in den GC Heap kopiert wurde. Daher sind statische Methoden in Bezug auf die Methodenaufrufgeschwindigkeit schneller, da nicht-statische Methoden instanziiert und Speicher zugewiesen werden müssen.

Aus Sicht der Programmiergeschichte waren fast alle Methoden der frühen strukturierten Programmierung statische Methoden, und die Einführung von Instanziierungsmethoden war eine Frage der objektorientierten Programmierung, sodass die Instanziierungsmethode das Problem der Betriebseffizienz und des Speichers nicht lösen sollte. Es geht darum, Entwicklung stärker strukturiert und objektorientiert zu gestalten.

        Aus der obigen Analyse lässt sich folgende Schlussfolgerung ziehen: 1. Die statische und die nicht-statische Methode sind die Unterscheidung zwischen dem Lösungsmodus. 2. Wenn Vererbung, Polymorphismus oder wenn eine Methode nichts mit dem Objekt ihrer Klasse zu tun hat, solltest du eine statische Methode wählen, wie zum Beispiel eine Werkzeugklasse.        

2. Was ist der Unterschied zwischen Singleton-Modus und statischer Methode?

        Manchmal müssen wir in der Technik eine Information pflegen, wie zum Beispiel einige Konfigurationsattribute, die zur Laufzeit geladen werden, die während der gesamten Lebensdauer der Anwendung existieren und öffentlich sind, sodass nur eine Kopie benötigt wird. Zu diesem Zeitpunkt erwägen wir, eine Singleton- oder statische Methode zur Pflege dieser Daten zu verwenden, aber wenn diese Daten objektorientiert gewonnen werden, verwenden wir einen Singleton.

        Erstens sind statische Methoden klassenbasiert, und Singletons objektbasiert. Wenn das Auflösungsmuster objektbasiert ist, verwenden Sie einen Singleton, ansonsten einen statischen Ansatz. Zum Beispiel muss man Klassen erben, Schnittstellen implementieren, die Initialisierung verzögern, Elternklassen umschreiben usw., um Singletons zu verwenden, zweitens sind statische Methoden prozessorientiert und Singletons objektorientiert. Drittens werden statische Attributvariablen nicht von GC gelöscht, sodass die Singleton-Objekte nicht von GC gelöscht werden, und Objekte, die in statischen Methoden generiert wurden, werden freigegeben, wenn die statische Methode ausgeführt wird.




Vorhergehend:Distributed Messaging Middleware Practice (von Ni Wei) Vollständiges chinesisches PDF
Nächster:Dell Latitude 5501 Laptop-Herunterfahren und automatisches Einschalten Problem gelöst
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com