php的單例模式


據說,單例模式是設計模式中最簡單的一種。

不多說,先上代碼,然后解說,一共兩個文件:

danli.class
    <?php
        class Danli
        {
            //保存類的實例的靜態成員變量
            static private $_instance=null;
            //私有的構造方法
            private function __construct(){
                echo "這是一個構造方法<br>";
            }
            //用於訪問類的實例的公共的靜態方法
            static public function getInstance(){
                if(!(self::$_instance instanceof Danli)){
                    echo "實例化<br>";
                    self::$_instance = new self;
                }
                return self::$_instance;
            }
            //類的其它方法
            public function test(){
                echo "調用成功<br>";
            }
        }
index.php
    <?php
        //加載類文件
        require "Danli.php";
        //第一次調用類的實例
        $first = Danli::getInstance();
        $first->test();
        //第二次調用類的實例
        $second = Danli::getInstance();
        $second->test();
輸出結果:
        實例化
        這是一個構造方法
        調用成功
        調用成功

以上是PHP單例模式的簡單實現,通過結果可以看到Danli類只實例化了一次。

接下來說一下單例模式。

簡單點兒說,單例模式就是讓類的一個對象成為系統中的唯一實例,避免大量的 new 操作消耗的資源,也方便設置鈎子輸出日志信息等。
關於單例模式在網上可以收到很多很詳細的解說,這里不再復述,咱們還是詳細說一下PHP的單例模式的實現。
從上面的代碼可以看出來,PHP的單例模式實現要求:
1、一個private的__construct是必須的,單例類不能在其它類中實例化,只能被自身實例化;
2、擁有一個保存類的實例的靜態成員變量;
3、一個靜態的公共方法用於實例化這個類,並訪問這個類的實例;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM