JoshChen模式筆記之php單例模式

單例模式:即一個對象只負責一個特定的任務。只實例化一次。php

Test.class.php 文件數據庫

class Test{
    private static $_instance;
    private function __construct(){
    }  
    
    public function __clone(){
        //防止被複制
        trigger_error("Clone is not allow!",E_USER_ERROR);
    }

    public static function getInstance(){
        if(!(self::$_instance instanceof self)){
           //*****************  
            echo "測試地方一";
           //*****************
            self::$_instance = new self;
        }  
       return self::$_instance;
    }

    public function test(){
        echo "ok";
    }
}

  接下來是Index.php 測試文件編程

<?php

require_once(dirname(__FILE__).'/test.class.php');
$test = Test::getInstance();
$test->test();

$test2 = Test::getInstance();
$test2->test();

  最後執行index.php文件以後,你會發現。設計模式

     結果爲:工具

測試地方一okok

  你會發現,也就是說,在實例化的過程當中,只輸出了一次"測試地方一"。而後第二次輸入ok的時候,表明已經跳過了實例化。因此,最終咱們的目的就達到了。單例模式其實就是這麼簡單。性能

來自 http://www.cnblogs.com/cchulong

最後,再看看好處是什麼。能夠懂得更多。測試

單例模式的優勢

單例模式的優勢:ui

  • 在內存中只有一個對象,節省內存空間。
  • 避免頻繁的建立銷燬對象,能夠提升性能。
  • 避免對共享資源的多重佔用。
  • 能夠全局訪問。

適用場景:因爲單例模式的以上優勢,因此是編程中用的比較多的一種設計模式。我總結了一下我所知道的適合使用單例模式的場景:設計

  • 須要頻繁實例化而後銷燬的對象。
  • 建立對象時耗時過多或者耗資源過多,但又常常用到的對象。
  • 有狀態的工具類對象。
  • 頻繁訪問數據庫或文件的對象。
  • 以及其餘我沒用過的全部要求只有一個對象的場景。
  • 來自 http://www.cnblogs.com/cchulong
相關文章
相關標籤/搜索