Le modèle singleton est un modèle de conception qui restreint l'instanciation d'une classe à une seule instance. Ceci est particulièrement utile lorsqu’un seul objet est nécessaire pour coordonner les actions dans l’ensemble du système.
Caractéristiques clés du modèle Singleton
Imaginez ce scénario
Pour mieux comprendre le modèle singleton, pensons-y en termes plus simples, comme avoir un jouet spécial qu'une seule personne peut posséder. Voici comment cela fonctionne :
Un jouet : imaginez une baguette magique super spéciale. Un seul enfant à la fois peut avoir cette baguette magique. Si quelqu'un d'autre veut l'utiliser, il doit le demander à cet enfant.
La garder en sécurité : Cet enfant garde la baguette magique dans un endroit sûr (comme un coffre à jouets) afin que personne d'autre ne puisse la saisir et l'emporter.
Demander le jouet : chaque fois qu'un ami veut jouer avec la baguette magique, il doit demander à l'enfant spécial. L'enfant partagera, mais il est le seul à pouvoir décider quand et comment le partager.
Comment cela est-il lié au modèle Singleton
Une instance : tout comme il n'y a qu'une seule baguette magique, dans le modèle singleton, il n'y a qu'une seule instance (ou copie) d'une classe. Vous pouvez considérer ce cours comme un modèle pour fabriquer des objets (comme des jouets).
Accès privé : Le coffre à jouets (ou constructeur) est fermé à tous. Cela signifie que personne ne peut créer une nouvelle baguette magique ; ils doivent utiliser la seule baguette qui existe.
Obtenir le jouet : Quand quelqu'un veut utiliser la baguette magique (ou la classe), il doit passer par une porte spéciale (une méthode appelée getInstance()). Cette porte vérifie si la baguette magique est déjà là. Si ce n'est pas le cas, il en fabrique un et le leur donne.
Exemple en PHP
Voici une implémentation simple du modèle singleton en PHP :
class MagicWand { private static $instance = null; // This is our one and only wand // This keeps anyone from making a new wand private function __construct() { } // This is the door to get the wand public static function getInstance() { if (self::$instance === null) { self::$instance = new MagicWand(); // Making the wand if it doesn't exist } return self::$instance; // Giving back the wand } public function castSpell() { echo "Casting a spell!"; } } // Using the magic wand $wand = MagicWand::getInstance(); $wand->castSpell(); // Now we can cast spells with the one and only wand!
Dans cette analogie :
Tout comme la façon dont un seul enfant peut avoir la baguette magique, en programmation, nous utilisons le modèle singleton pour garantir qu'une seule instance d'une classe existe, et que chacun doit la demander quand il veut l'utiliser !
Ce modèle permet de gérer efficacement les ressources et de maintenir un état cohérent dans votre application, ce qui en fait un concept essentiel dans la conception de logiciels.
Refactoring Guru - 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!