Im Allgemeinen besteht eine Eins-zu-Viele-Beziehung zwischen Klassen und Objekten (Instanzen von Klassen). In manchen Fällen
benötigen wir jedoch nur eine Instanz einer Klasse. Beispielsweise führt die Vielfalt mehrerer Instanzen zu einer Verschwendung von Ressourcen und verringert die Effizienz. Ein weiteres Beispiel ist, dass es sich um Fabrikobjekte (Fabrikobjekte) handelt, die zum Erstellen anderer Objekte im System verwendet werden , usw. Zu diesem Zeitpunkt besteht eine bessere Möglichkeit, damit umzugehen, darin, die Instanzen der Klasse
einzeln zu machen: Stellen Sie sicher, dass diese Klasse während des Betriebs höchstens eine Instanz generiert (Singleton-Modus
-Modus), oder machen Sie alle Instanzen konsistent ( Monostate-Modus).
Beispiel für den unter PHP implementierten Singleton-Modus:
<?php classSingleton { privatestatic$instance; privatefunction__construct() { } publicstaticfunctioninstance() { if(self::$instance==null) { self::$instance=newSingleton(); } returnself::$instance; } } ?>
$instance=Singleton::instance(); // 这样是错误的: $instance = new Singleton();
1. Ein statisches, privates Attribut: Wird zum Speichern einer Instanz verwendet. Static stellt sicher, dass die Klasse nicht instanziiert wird
und kann auch von Klassenmethoden aufgerufen werden. Private stellt sicher, dass dies der Fall ist wird nicht instanziiert usw. Ändern.
2. Ein privater Konstruktor: Diese Klasse darf nicht außerhalb dieser Klasse instanziiert werden.
3. Eine statische, öffentliche Methode: verantwortlich für die Erstellung der Instanz und die Sicherstellung ihrer Einzigartigkeit. Mit static kann die Methode aufgerufen werden, ohne dass sie instanziiert wird.
Im Vergleich zum unten aufgeführten Monostat sind seine Vorteile:
2. Es kann eine Singleton-Unterklasse davon abgeleitet und erstellt werden.
Nachteile:
2. Die Verwendung ist undurchsichtig, der Benutzer muss wissen, dass sie eine Singleton-Klasse verwendet und nicht über
new instanziiert werden kann.
Das Grundprinzip des Monostate-Musters besteht darin, dass alle Instanzen der Monostate-Klasse dieselbe Instanz verwenden
. Tatsächlich können alle Attribute der Klasse als statisch deklariert werden:
Das Obige ist der Inhalt der Implementierung des Singleton-Modus und des Monostate-Modus in PHP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
<?php classmonostate { privatestatic$itsX=0; publicfunction__construct() { } publicfunctionsetX($x) { self::$itsX=$x; } publicfunctiongetX() { returnself::$itsX; } } ?>