Maison  >  Article  >  développement back-end  >  Mode Singleton et mode usine en PHP

Mode Singleton et mode usine en PHP

高洛峰
高洛峰original
2017-02-18 16:22:251287parcourir

Concept de modèle singleton

Le modèle singleton fait référence à un modèle de conception dans lequel une classe ne possède qu'une seule instance d'objet dans l'ensemble de l'application.

Caractéristiques du modèle singleton


Une classe ne possède qu'une seule instance dans toute l'application

La classe doit créer elle-même cette instance

Vous devez fournir vous-même cette instance à l'ensemble du système

La raison de l'utilisation du mode singleton en PHP

La plupart de mes opérations en PHP impliquent de traiter diverses bases de données, notamment mysql, redis, Memcache et autres bases de données relationnelles et non relationnelles, il y aura donc un grand nombre d'opérations pour se connecter à la base de données dans une application. Si le mode singleton n'est pas utilisé, de nouvelles opérations seront nécessaires à chaque fois, mais chacune. new consommera beaucoup de ressources mémoire et de ressources système, et chaque fois qu'une connexion à la base de données est ouverte et fermée, c'est un excellent test et un gaspillage de la base de données.


Besoin d'une variable membre statique qui contient la seule instance de la classe (généralement $instance est une variable privée)

Les constructeurs et les fonctions de clonage doivent être déclarés private , afin d'éviter que la nouvelle classe du programme externe ne perde le sens du mode singleton

, une méthode statique publique pour accéder à cette instance doit être fournie, renvoyant ainsi une référence à la seule instance

//设计模式
//单例模式  都是使用同一个对象
//class Ren
//{
//    public $name;
//    private static $dx;   //存储对象
//
//    private function __construct()
//    {
//
//    }
//
//    public static function DuiXiang()
//    {
//        if(empty(self::$dx))
//        {
//            self:;$dx=new Ren();
//        }
//        return self::$dx;
//    }
//}
//
//$r= Ren::DuiXiang();

//把构造函数变为私有
//做了一个方法来间接造对象
//在该方法里面加限制

Classe Factory

 Fait référence à une classe qui contient une méthode spécifiquement utilisée pour créer d'autres objets. Les classes Factory sont cruciales dans la pratique de la programmation polymorphe. , qui permettent le remplacement dynamique des classes et la modification des configurations, rendent souvent l'application plus flexible. Il est important que les développeurs PHP avancés maîtrisent le modèle d'usine.

Le modèle d'usine est généralement utilisé pour renvoyer différentes classes conformes à des interfaces similaires. Une utilisation courante des usines consiste à créer des fournisseurs polymorphes, nous permettant de décider lesquels doivent être instanciés en fonction de la logique de l'application ou des paramètres de configuration. Une classe, par exemple, peut être étendue à l'aide d'un tel fournisseur pour utiliser le nouveau nom étendu sans qu'il soit nécessaire de refactoriser d'autres parties de l'application.

Habituellement, le modèle de fabrique a une construction clé, qui est une méthode statique nommée Factory selon le principe général. Cependant, ce n'est qu'un principe. Cette méthode statique peut également être nommée arbitrairement. accepter les paramètres de toutes les données. Il doit s'agir de renvoyer un objet.

class YunSuan
{
    public $a;
    public $b;
    function Suan()
    {
        echo "对两个数进行运算";
    }
class gongchang
{   //功能 : 给一个参数,返回一个对象
    static function chanpin($name)
    {
        switch($name)
        {
            case "'+":
                return new jia();
                break;
            case "-";
                return new jian();
                break;
        }
    }
}

$a=gongchang::chanpin("+");

Pour plus d'articles liés au mode singleton et au mode usine en PHP, veuillez faire attention au site Web PHP 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