写了那么多年的代码,从来没有好好地写过笔记做过积累,一直在被业务给牵着跑,不得不说是个遗憾。现在开始要多复习、多学习,让自己迅速成长起来。
在设计模式中,我个人觉得单例模式是最简单、最好理解的一种,不过由于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);
}
}
测试通过。