Maison  >  Article  >  développement back-end  >  Qu’est-ce que le modèle singleton ?

Qu’est-ce que le modèle singleton ?

藏色散人
藏色散人avant
2019-04-15 16:04:424858parcourir



Le modèle Singleton est un modèle de conception de logiciels couramment utilisé. Il ne contient qu’une seule classe spéciale appelée classe singleton dans sa structure de base. Le mode singleton peut garantir qu'il n'y a qu'une seule instance d'une classe dans le système et que l'instance est facilement accessible depuis le monde extérieur, facilitant ainsi le contrôle du nombre d'instances et économisant les ressources du système. Si vous souhaitez qu'un seul objet d'une certaine classe existe dans le système, le modèle singleton est la meilleure solution.

Comment s'assurer qu'une classe n'a qu'une seule instance et que cette instance est facilement accessible ? Définir une variable globale garantit que l'objet est accessible à tout moment, mais cela ne nous empêche pas d'instancier plusieurs objets. Une meilleure solution consiste à confier à la classe elle-même la responsabilité de sauvegarder sa seule instance. Cette classe garantit qu'aucune autre instance n'est créée et fournit une méthode pour accéder à l'instance. C'est la motivation du modèle derrière le modèle singleton.

Par exemple, pendant le processus de développement de php, nous avons créé une classe db (classe d'opération de base de données), puis nous espérons qu'une base de données dans un fichier php ne peut être connectée qu'une seule fois et qu'une seule base de données est nécessaire dans un fichier php. Objet ! Parce que se connecter plusieurs fois à la base de données réduira considérablement l’efficacité d’exécution de PHP. Cela entraînera également une énorme surcharge du système !

Utilisez le mode singleton pour encapsuler votre base de données

<?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命令关闭数据库连接....

//Vous pouvez voir que peu importe le nombre de fois que nous obtenons l'objet db, bien qu'ils aient des noms différents, ils représentent tous la même chose objet ! Ceci implémente le modèle singleton !



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer