寫了那麼多年的代碼,從來沒有好好地寫過筆記做過積累,一直在被業務給牽着跑,不得不說是個遺憾。現在開始要多複習、多學習,讓自己迅速成長起來。
在設計模式中,我個人覺得單例模式是最簡單、最好理解的一種,不過由於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);
}
}
測試通過。