Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kleine Frage zum Singleton-Modus

Eine kleine Frage zum Singleton-Modus

WBOY
WBOYOriginal
2016-12-01 00:25:191101Durchsuche

Vor kurzem habe ich einige kleine Projekte gestartet und bin mit dem einfachen Gewinnmodell in Berührung gekommen. Basierend auf dem Prinzip, bei der Definition einer Klasse Informationen so weit wie möglich zu verbergen, habe ich die Klasse wie folgt geschrieben

<code>class openGate{
        private $dbname='mysql:host=localhost;dbname=project';
        private    $username='root';
        private    $password='root';
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                self::$key=new openGate();
                return self::$key->gateWay();
            }
            return self::$key->gateway();
        }
        public function gateWay(){
            return new PDO($this->dbname,$this->username,$this->password);
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

Entschuldigung, wie ist das im Vergleich zu Folgendem

<code>class openGate{
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                $dbname='mysql:host=localhost;dbname=project';
                $username='root';
                $password='root';
                return self::$key=new PDO($dbname,$username,$password);
            }
            return self::$key;
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

Was sind die Vor- und Nachteile, oder ist es einfach überflüssig?

Antwortinhalt:

Vor kurzem habe ich einige kleine Projekte gestartet und bin mit dem einfachen Gewinnmodell in Berührung gekommen. Basierend auf dem Prinzip, bei der Definition einer Klasse Informationen so weit wie möglich zu verbergen, habe ich die Klasse wie folgt geschrieben

<code>class openGate{
        private $dbname='mysql:host=localhost;dbname=project';
        private    $username='root';
        private    $password='root';
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                self::$key=new openGate();
                return self::$key->gateWay();
            }
            return self::$key->gateway();
        }
        public function gateWay(){
            return new PDO($this->dbname,$this->username,$this->password);
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

Entschuldigung, wie ist das im Vergleich zu Folgendem

<code>class openGate{
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                $dbname='mysql:host=localhost;dbname=project';
                $username='root';
                $password='root';
                return self::$key=new PDO($dbname,$username,$password);
            }
            return self::$key;
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

Was sind die Vor- und Nachteile, oder ist es einfach überflüssig?

Ihre Änderungen haben nichts mit dem Singleton-Modell zu tun

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