Heim > Backend-Entwicklung > PHP-Problem > Der Unterschied zwischen dem PHP-Factory-Modus und dem Singleton-Modus

Der Unterschied zwischen dem PHP-Factory-Modus und dem Singleton-Modus

藏色散人
Freigeben: 2023-02-25 21:20:02
Original
2911 Leute haben es durchsucht

Der Unterschied zwischen dem PHP-Factory-Modus und dem Singleton-Modus

Der Unterschied zwischen dem PHP-Factory-Modus und dem Singleton-Modus

Singleton-Modus: Verhindern Sie wiederholte Instanziierung und vermeiden Sie eine große Anzahl Der neue Vorgang reduziert den Verbrauch von System- und Speicherressourcen, sodass nur ein Instanzobjekt vorhanden ist.

header("Content-type: text/html; charset=utf-8");   //定义字符编码,防止乱码
/**
 * 单利类
 */
class Single
{
    private static $_instance;  //保存实例的对象
 
 
    private function __construct()  //定义构造方法
    {
 
    }
 
    private function __clone()  //定义一个空方法防止被外部克隆
    {  
 
    }
 
 
    public static function getInstance()    //定义一个获取实例对象的方法
    {
        if (!(self::$_instance  instanceof Single)) {
            self::$_instance = new self();
        }
        return self::$_instance;        //返回实例对象
    }
 
    /**
     * 测试方法
     */
    public function test()
    {
        echo "单利模式";
    }
 
}
 
 
$run=Single::getInstance();
$run->test();
Nach dem Login kopieren

Werksmodus: Ein Modus, der Fabrikmethoden verwendet, um den neuen Vorgang zu ersetzen, wenn Sie den instanziierten Vorgang ändern müssen Klassenname, Ändern Sie ihn einfach in der Factory-Methode, Sie müssen nicht nacheinander nach bestimmten Instanziierungsstellen im Code suchen

header("content-type:text/html;charset=utf-8"); //定义字符编码,防止乱码
/**
 * 测试类一
  */
class demo1
{
    //定义一个test1方法
    public function test1()
    {
        echo '这是demo1类的test1方法'.PHP_EOL;
    }
}
/**
 * 测试类二
  */
class demo2
{
    //定义一个test2方法
    public function test2()
    {
        echo '这是demo2类的test2方法'.PHP_EOL;
    }
}
/**
 * 工厂类
 */
class Factoty
{
    // 根据传参类名,创建对应的对象
    static function createObject($className)
    {
        return new $className();
    }
}
/**
 * 通过传类名,调用工厂类里面的创建对象方法
 */
$demo = Factoty::createObject('demo1');
$demo->test1();             //输出这是demo1类的test1方法
$demo = Factoty::createObject('demo2');
$demo->test2();            //输出这是demo2类的test2方法
Nach dem Login kopieren

Weitere PHP-Kenntnisse finden Sie auf der PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen dem PHP-Factory-Modus und dem Singleton-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage