单例模式可能是设计模式中最简单的模式,很多时候,我甚至觉得不应该叫设计模式,只是一个编码技巧
接下来我们看看什么是单例模式
单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例
也就是说,不管程序多复杂,在一个页面new了多少次某个类,如果这个类初始化用单例模式,就只会被创建一次,其他的new会复用第一次的创建,不会多次初始化
这样的好处是显而易见的,如果初始化里有数据库连接操作,如果有大数组循环,省下来的开销是很可观的
那么,如何做到呢?下面用代码例子来说明
class Test {
//保存例实例在此属性中
private static $_instance;
//构造函数声明为private,防止直接创建对象
private function __construct() {
echo '我被实例化了!';
}
//单例方法
public static function getInstance()
{
//var_dump(isset(self::$_instance));
if(!isset(self::$_instance)) {
self::$_instance=new self();
}
return self::$_instance;
}
//阻止用户复制对象实例
private function __clone() {
trigger_error('Clone is not allow', E_USER_ERROR);
}
function godeye() {
echo("www.godeye.org");
}
}
从上面代码可以看出,static $_instance用一个静态变量存初始化值,第二次调用getInstance初始化的时候,会先判断$_instance有没有值,有值的话就不再初始化
以此来实现单例模式
转自:http://www.godeye.org/lesson/95