PHP設計模式——單例模式

寫了那麼多年的代碼,從來沒有好好地寫過筆記做過積累,一直在被業務給牽着跑,不得不說是個遺憾。現在開始要多複習、多學習,讓自己迅速成長起來。

在設計模式中,我個人覺得單例模式是最簡單、最好理解的一種,不過由於PHP的特殊性,PHP的單例模式只是在一次請求中才是有效的。

看看單例模式的實現代碼先:

<?php
class Singleton {
    protected static $_instance = null;

    private function __construct() {}

    private function __clone() {}

    public static function getInstance() {
        if (!isset(self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
}


當然,一個安全的單例模式應該要把構造函數和克隆函數設置爲私有,以防止外部代碼直接生成類的實例。

很簡單,用靜態方法返回一個全局唯一的實例;下面是測試代碼,我用simpletest框架做測試:

<?php
require_once 'simpletest/autorun.php';
require_once '../singleton.php';

class TestSingleton extends UnitTestCase {
    public function testIsSingleton() {
        $ins1 = Singleton::getInstance();
        $ins2 = Singleton::getInstance();
        $this->assertTrue($ins1===$ins2);
        $this->assertEqual($ins1, $ins2);
    }
}

測試通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章