Heim > häufiges Problem > Hauptteil

Was sind die Vorteile des Singleton-Musters?

Guanhui
Freigeben: 2020-06-28 17:02:07
Original
10306 Leute haben es durchsucht

Vorteile des Singleton-Musters: 1. Es kann sicherstellen, dass alle Objekte auf eine eindeutige Instanz zugreifen. 2. Da die Klasse den Instanziierungsprozess steuert, kann die Klasse den Instanziierungsprozess flexibel ändern In einem Fall reduziert es den Speicher-Overhead und den Systemleistungs-Overhead.

Was sind die Vorteile des Singleton-Musters?

Das Singleton-Muster ist eine der einfachsten Formen von Entwurfsmustern. Der Zweck dieses Musters besteht darin, ein Objekt einer Klasse zur einzigen Instanz im System zu machen. Um dies zu erreichen, instanziieren Sie es zunächst auf der Clientseite. Daher ist es notwendig, einen Mechanismus zu verwenden, der nur die Generierung eindeutiger Instanzen der Objektklasse zulässt und jeglichen Zugriff auf das Objekt, das generiert werden soll, „blockiert“. Verwenden Sie Factory-Methoden, um den Instanziierungsprozess einzuschränken. Diese Methode sollte eine statische Methode (Klassenmethode) sein, da es keinen Sinn macht, eine Instanz der Klasse eine weitere eindeutige Instanz generieren zu lassen.

Singleton-Mustermotivation

Für einige Klassen im System ist es wichtig, nur eine Instanz zu haben. Beispielsweise kann es mehrere Druckaufgaben in einem System geben. Es kann jedoch nur eine Arbeitsaufgabe geben; ein System kann nur einen Fenstermanager oder ein Dateisystem haben, und ein System kann nur ein Timing-Tool oder einen ID-Generator (Seriennummer) haben. Unter Windows kann beispielsweise nur ein Task-Manager geöffnet werden. Wenn Sie keinen Mechanismus zum Eindeutigen von Fensterobjekten verwenden, werden mehrere Fenster angezeigt. Wenn die in diesen Fenstern angezeigten Inhalte genau gleich sind, handelt es sich um doppelte Objekte, was Speicherressourcen verschwendet, wenn die in diesen Fenstern angezeigten Inhalte inkonsistent sind. Dies bedeutet, dass das System zu einem bestimmten Zeitpunkt mehrere Zustände aufweist, die nicht mit der Realität übereinstimmen und auch zu Missverständnissen bei Benutzern führen können, die nicht wissen, welcher Zustand der tatsächliche ist. Daher ist es manchmal sehr wichtig, die Einzigartigkeit eines Objekts im System sicherzustellen, das heißt, es kann nur eine Instanz einer Klasse geben. [2]

Wie kann sichergestellt werden, dass eine Klasse nur eine Instanz hat und dass auf diese Instanz leicht zugegriffen werden kann? Durch die Definition einer globalen Variablen wird sichergestellt, dass jederzeit auf das Objekt zugegriffen werden kann, es hindert uns jedoch nicht daran, mehrere Objekte zu instanziieren. Eine bessere Lösung besteht darin, die Klasse selbst für das Speichern ihrer einzigen Instanz verantwortlich zu machen. Diese Klasse garantiert, dass keine anderen Instanzen erstellt werden, und stellt eine Methode für den Zugriff auf die Instanz bereit. Dies ist die Mustermotivation hinter dem Singleton-Muster.

Wichtige Punkte des Singleton-Modus

Natürlich gibt es drei Hauptpunkte des Singleton-Modus; erstens kann eine Klasse nur eine Instanz haben; zweitens muss sie diese Instanz erstellen von selbst; Drittens muss es diese Instanz selbst für das gesamte System bereitstellen.

Aus Sicht der spezifischen Implementierung gibt es drei Punkte: Erstens stellt die Singleton-Modus-Klasse nur private Konstruktoren bereit; zweitens enthält die Klassendefinition ein statisches privates Objekt der Klasse; drittens stellt die Klasse ein statisches öffentliches Objekt bereit Funktion zum Erstellen oder Erhalten eines eigenen statischen privaten Objekts.

Im Objektdiagramm unten gibt es ein „Singleton-Objekt“, und „Kunde A“, „Kunde B“ und „Kunde C“ sind die drei Kundenobjekte des Singleton-Objekts. Wie Sie sehen, teilen sich alle Kundenobjekte ein Singleton-Objekt. Und aus der Verbindungslinie vom Singleton-Objekt zu sich selbst ist ersichtlich, dass das Singleton-Objekt eine Referenz auf sich selbst enthält.

Einige Ressourcenmanager sind oft im Singleton-Modus konzipiert.

In einem Computersystem gehören zu den Ressourcen, die verwaltet werden müssen, externe Softwareressourcen. Beispielsweise kann jeder Computer über mehrere Drucker verfügen, aber nur über einen Druckerspooler, um zu verhindern, dass zwei Druckaufträge an den Drucker ausgegeben werden gleichzeitig. Jeder Computer kann über mehrere Faxkarten verfügen, allerdings sollte nur eine Software für die Verwaltung der Faxkarten zuständig sein, um zu vermeiden, dass zwei Faxaufträge gleichzeitig auf die Faxkarte übertragen werden. Jeder Computer kann über mehrere Kommunikationsanschlüsse verfügen. Das System sollte diese Kommunikationsanschlüsse zentral verwalten, um zu verhindern, dass ein Kommunikationsanschluss gleichzeitig von zwei Anforderungen aufgerufen wird.

Zu den Ressourcen, die verwaltet werden müssen, gehören interne Ressourcen der Software. Beispielsweise verfügt die meiste Software über eine (oder sogar mehrere) Eigenschaftendateien zum Speichern von Systemkonfigurationen. Ein solches System sollte über ein Objekt verfügen, das eine Eigenschaftendatei verwaltet.

Zu den internen Ressourcen der Software, die es zu verwalten gilt, gehören auch Komponenten, die für die Erfassung der Anzahl der Besucher der Website verantwortlich sind, Komponenten, die interne Ereignisse und Fehlermeldungen des Softwaresystems aufzeichnen, oder Komponenten, die prüfen die Leistung des Systems usw. Diese Komponenten müssen zentral verwaltet werden und es können nicht mehrere Komponenten erstellt werden.

Diese Ressourcenmanager-Komponenten dürfen nur eine Instanz haben, nämlich eine; sie müssen sich selbst initialisieren, nämlich zwei, und das gesamte System darf auf sich selbst zugreifen, nämlich auf die dritte. Daher erfüllen sie alle die Bedingungen des Singleton-Musters und sind Anwendungen des Singleton-Musters.

Empfohlenes Tutorial: „PHP

Das obige ist der detaillierte Inhalt vonWas sind die Vorteile des Singleton-Musters?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!