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

藏色散人
Libérer: 2023-04-05 20:36:02
avant
4911 Les gens l'ont consulté



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命令关闭数据库连接....
Copier après la connexion

//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!

Étiquettes associées:
source:hcoder.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!