Maison  >  Article  >  développement back-end  >  La différence entre le mode usine et le mode singleton dans les modèles de conception PHP

La différence entre le mode usine et le mode singleton dans les modèles de conception PHP

一个新手
一个新手original
2017-10-18 09:07:562705parcourir
//让该类在外界无法造对象
//让外界可以造一个对象,做一个静态方法返回对象
//在类里面通过让静态变量控制返回对象只能是一个。

Il y a trois points principaux dans le modèle singleton :

  1. Premièrement, une classe ne peut avoir qu'une seule instance ;

  2. La seconde est qu'il doit créer cette instance par lui-même
  3. La troisième est qu'il doit fournir cette instance à l'ensemble du système par lui-même ;
Pourquoi utiliser le mode singleton PHP

    1 L'application de php se trouve principalement dans les applications de base de données, dans une application. Il y aura un grand nombre d'opérations de base de données lors du développement orienté objet, si vous utilisez le mode singleton, vous pouvez éviter un grand nombre de nouvelles opérations consommant des ressources, et vous pouvez également réduire les connexions à la base de données afin qu'il y ait trop de connexions. sont moins susceptibles de se produire.
  1. 2. Si une classe est nécessaire pour contrôler globalement certaines informations de configuration dans le système, elle peut être facilement implémentée en utilisant le mode singleton. Cela peut être vu dans la partie FrontController du zend. Cadre.
  2. 3. Dans une requête de page, il est facile de déboguer, car tout le code (comme la classe d'opération de base de données db) est concentré dans une seule classe, et nous pouvons définir des hooks dans la classe, journaux de sortie pour éviter var_dump et echo partout.
class cat
{
    public $name;
    private function __construct()
    {

    }
    static $temp;
    static function new_ob()
    {
        if(empty(self::$temp)){
           self::$temp = new cat();
        }
        return self::$temp;
    }
    function  speak(){
        return "喵喵喵";
    }
}
//$mao = new cat();


//如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。
//$mao;
//if (empty($mao)){
//    $mao = new cat();
//}
//    $xxx = $mao;

$mao = cat::new_ob();
$mao2 = cat::new_ob();
//给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。
$mao->name = "py";
2. Modèle d'usine simple

    ①Classe de base abstraite : définir quelques méthodes abstraites dans la classe, Utilisé pour implémenter
  • ②Hérité de la classe de base abstraite dans la sous-classe : implémenter la méthode abstraite dans la classe de base
  • ③Classe Factory : utilisée pour instancier toutes les sous-classes correspondantes

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