單例模式的一點小疑問

WBOY
發布: 2023-03-01 15:08:01
原創
1145 人瀏覽過

最近在開始一些小專案,接觸到單利模式,本著定義類別的時候,盡可能的隱藏資訊的原則,我對類別進行了以下的編寫

<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>
登入後複製
登入後複製

請問一下,這樣和以下相比

<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>
登入後複製
登入後複製

有哪些優缺點,或者是只是單純的多餘呢?

回覆內容:

最近在開始一些小專案,接觸到單利模式,本著定義類別的時候,盡可能的隱藏資訊的原則,我對類別進行了以下的編寫

<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>
登入後複製
登入後複製

請問一下,這樣和以下相比

<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>
登入後複製
登入後複製

有哪些優缺點,或者是只是單純的多餘呢?

你的改動,跟單例模式沒有半毛錢關係

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板