Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist ein Singleton-Muster?

Was ist ein Singleton-Muster?

藏色散人
藏色散人nach vorne
2019-04-15 16:04:424858Durchsuche



Singleton-Muster ist ein häufig verwendetes Software-Designmuster. Es enthält in seiner Kernstruktur nur eine spezielle Klasse, die Singleton-Klasse genannt wird. Der Singleton-Modus kann sicherstellen, dass es nur eine Instanz einer Klasse im System gibt und dass die Instanz von außen leicht zugänglich ist, wodurch die Kontrolle über die Anzahl der Instanzen erleichtert und Systemressourcen gespart werden. Wenn nur ein Objekt einer bestimmten Klasse im System vorhanden sein soll, ist das Singleton-Muster die beste Lösung.

Wie kann sichergestellt werden, dass eine Klasse nur eine Instanz hat und dass diese Instanz leicht zugänglich ist? 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.

Zum Beispiel haben wir während des Entwicklungsprozesses von PHP eine DB-Klasse (Datenbankoperationsklasse) erstellt. Dann hoffen wir, dass eine Datenbank in einer PHP-Datei nur einmal verbunden werden kann und in einer nur eine Datenbank benötigt wird PHP-Datei. Objekt! Da eine mehrfache Verbindung zur Datenbank die Ausführungseffizienz von PHP erheblich verringert. Es wird auch einen enormen Systemaufwand mit sich bringen!

Verwenden Sie den Singleton-Modus, um Ihre Datenbank zu kapseln

<?php
class db
{
//使用一个静态变量记录db对象初始化时为null
public static $db = null;
/* 私有构造函数是类无法完成外部的调用
* 意味着您将无法使用 $xx = new db();
*/
private function __construct(){
echo &#39;连接数据库....&#39;;
}
/* 
* 使用静态方法去获取数据对象
* 获取时先判断db对象是否已经存在,如果存在则直接返回db对象反正则创建这个对象
*/
public static function getInstance(){
if(self::$db == null){
self::$db = new db();
}
return self::$db;
}
public function query($sql){
echo &#39;执行sql命令&#39;;
}
public function __destruct(){
echo &#39;关闭数据库连接....&#39;;
}
}
$db = db::getInstance();
$db1 = db::getInstance();
$db->query(&#39;test&#39;);
$db2 = db::getInstance();
//输出 : 连接数据库....执行sql命令关闭数据库连接....

//Sie können sehen, dass unabhängig davon, wie oft wir das Datenbankobjekt erhalten, alle dasselbe Objekt darstellen, obwohl ihre Namen unterschiedlich sind! Dies implementiert das Singleton-Muster!



Das obige ist der detaillierte Inhalt vonWas ist ein Singleton-Muster?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:hcoder.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was ist ein Fabrikmuster?Nächster Artikel:Was ist ein Fabrikmuster?