Maison  >  Article  >  développement back-end  >  Quels sont les modèles de conception d'intérêt simples en PHP ?

Quels sont les modèles de conception d'intérêt simples en PHP ?

DDD
DDDoriginal
2023-08-16 15:04:07659parcourir

Les modèles de conception PHP à intérêt unique incluent : 1. Le mode singleton de style affamé, qui fait référence à la création d'une instance lorsque la classe est chargée, puis au retour direct de l'instance 2. Le mode singleton de style paresseux, qui obtient l'instance sur le ; La méthode first call est utilisée pour créer une instance pour obtenir un chargement retardé;3. Le mode singleton de verrouillage à double vérification, basé sur le mode singleton paresseux, garantit la sécurité des threads grâce au verrouillage, ce qui permet d'obtenir un chargement retardé et la sécurité des threads; of variables enregistre l'instance dans une variable statique et fournit une méthode statique pour obtenir l'instance afin d'obtenir une sécurité simple des threads.

Quels sont les modèles de conception d'intérêt simples en PHP ?

L'environnement d'exploitation de cet article : système Windows 10, version PHP8.1.3, ordinateur Dell G3.

Le modèle de conception PHP singleton est un modèle de conception couramment utilisé, qui permet de garantir qu'une classe n'a qu'une seule instance et fournit un point d'accès global.

En PHP, il existe plusieurs façons d'implémenter le modèle de conception singleton :

Modèle singleton de style affamé

Le modèle singleton affamé-chinois signifie créer une instance lorsque la classe est chargée, puis renvoyer directement l'exemple. L'avantage de cette méthode est qu'elle est simple à mettre en œuvre et sécurisée pour les threads, mais l'inconvénient est qu'un chargement paresseux ne peut pas être réalisé.

class Singleton {
    private static $instance = new Singleton();
    private function __construct() {}
    public static function getInstance() {
        return self::$instance;
    }
}

Lazy Singleton Pattern

Lazy Singleton Pattern signifie qu'une instance est créée uniquement lorsque la méthode pour obtenir l'instance est appelée pour la première fois. L'avantage de cette approche est qu'elle peut implémenter un chargement différé, mais l'inconvénient est que des problèmes de sécurité des threads peuvent survenir dans un environnement multithread.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

Mode singleton de verrouillage à double vérification

Le mode singleton de verrouillage à double vérification est basé sur le mode singleton paresseux et garantit la sécurité des threads grâce au verrouillage. L'avantage de cette approche est qu'elle permet un chargement paresseux et une sécurité des threads, mais l'inconvénient est qu'elle augmente la complexité du code.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            synchronized(self::class) {
                if (self::$instance == null) {
                    self::$instance = new Singleton();
                }
            }
        }
        return self::$instance;
    }
}

Modèle Singleton utilisant des variables statiques

Le modèle Singleton utilisant des variables statiques signifie enregistrer l'instance dans une variable statique et fournir une méthode statique pour obtenir l'instance. L'avantage de cette méthode est qu'elle est simple à mettre en œuvre et sécurisée pour les threads, mais l'inconvénient est qu'un chargement paresseux ne peut pas être réalisé.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

Ce qui précède présente les méthodes d'implémentation de plusieurs modèles de conception PHP singleton courants. En fonction des besoins et des scénarios spécifiques, vous pouvez choisir la manière appropriée d'implémenter 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:
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