Heim > php教程 > PHP开发 > Hauptteil

Implementierung des Singleton-Modus und des Monostate-Modus in PHP

黄舟
Freigeben: 2016-12-21 10:54:00
Original
1130 Leute haben es durchsucht

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:

Das Erstellen einer Singleton-Klasseninstanz kann nur so erfolgen:
<?php
 classSingleton
 {
      privatestatic$instance;
 
      privatefunction__construct()
      {
      }
 
      publicstaticfunctioninstance()
      {
          if(self::$instance==null)
          {
              self::$instance=newSingleton();
          }
 
          returnself::$instance;
      }
 }
 ?>
Nach dem Login kopieren

Eine detaillierte Analyse des unter PHP implementierten Singleton-Modus PHP-Funktionen des Musters:
$instance=Singleton::instance();
 // 这样是错误的: $instance = new Singleton();
Nach dem Login kopieren

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:

1. Es kann an jede Klasse angepasst werden und erfüllt die oben genannten drei Eigenschaften.

2. Es kann eine Singleton-Unterklasse davon abgeleitet und erstellt werden.

Nachteile:

1. Die Singleton-Funktion kann nicht vererbt werden und ihre Unterklassen sind keine Singleton-Klassen.

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;
      }
 }
 ?>
Nach dem Login kopieren


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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage