Heim  >  Artikel  >  Backend-Entwicklung  >  Singleton-Modus und Factory-Modus in PHP

Singleton-Modus und Factory-Modus in PHP

高洛峰
高洛峰Original
2017-02-18 16:22:251244Durchsuche

Konzept des Singleton-Musters

Das Singleton-Muster bezieht sich auf ein Entwurfsmuster, bei dem eine Klasse in der gesamten Anwendung nur eine Objektinstanz hat.

Eigenschaften des Singleton-Musters


Eine Klasse hat nur eine Instanz in der gesamten Anwendung

Die Klasse muss diese Instanz selbst erstellen

Sie müssen diese Instanz selbst für das gesamte System bereitstellen

Der Grund für die Verwendung des Singleton-Modus in PHP

Die meisten meiner Operationen in PHP beinhalten den Umgang mit verschiedenen Datenbanken, einschließlich mysql, redis, Memcache und andere relationale und nicht relationale Datenbanken, sodass eine große Anzahl von Vorgängen zum Herstellen einer Verbindung mit der Datenbank in einer Anwendung erforderlich ist. Wenn der Singleton-Modus nicht verwendet wird, sind jedes Mal neue Vorgänge erforderlich new verbraucht viele Speicherressourcen und Systemressourcen, und jedes Mal, wenn eine Datenbankverbindung geöffnet und geschlossen wird, ist dies ein großer Test und eine Verschwendung der Datenbank.


Benötigt eine statische Mitgliedsvariable, die die einzige Instanz der Klasse enthält (normalerweise ist $instance eine private Variable)

Konstruktoren und Klonfunktionen müssen deklariert werden privat Um zu verhindern, dass die neue Klasse des externen Programms die Bedeutung des Singleton-Modus

verliert, muss eine öffentliche statische Methode für den Zugriff auf diese Instanz bereitgestellt werden, wodurch ein Verweis auf die einzige Instanz zurückgegeben wird

//设计模式
//单例模式  都是使用同一个对象
//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();

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

Factory-Klasse

 Bezieht sich auf eine Klasse, die eine Methode enthält, die speziell zum Erstellen anderer Objekte verwendet wird. Factory-Klassen sind in der Praxis der polymorphen Programmierung von entscheidender Bedeutung , die das dynamische Ersetzen von Klassen und das Ändern von Konfigurationen ermöglichen, machen die Anwendung oft flexibler. Für fortgeschrittene PHP-Entwickler ist es wichtig, das Factory-Muster zu beherrschen.

Das Fabrikmuster wird normalerweise verwendet, um verschiedene Klassen zurückzugeben, die ähnlichen Schnittstellen entsprechen. Eine häufige Verwendung von Fabriken besteht darin, polymorphe Anbieter zu erstellen, sodass wir basierend auf Anwendungslogik oder Konfigurationseinstellungen entscheiden können, welche instanziiert werden sollen. Beispielsweise kann eine Klasse mithilfe eines solchen Anbieters erweitert werden, um den neuen erweiterten Namen zu verwenden, ohne dass andere Teile der Anwendung umgestaltet werden müssen.

Normalerweise verfügt das Factory-Muster über eine statische Methode mit dem Namen Factory. Dies ist jedoch nur ein Prinzip. Diese statische Methode kann auch beliebig benannt werden Akzeptieren Sie Parameter aller Daten. Es muss ein Objekt zurückgegeben werden.

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("+");

Weitere Artikel zum Singleton-Modus und Factory-Modus in PHP finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
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