目标:
设计一个类,该类只允许实例化一个对象出来!
解决方法:
//分4步:
class S{
//第1步:私有化构造方法:以防止new该类
private function __construct(){}
//第2步:定义一个私有的静态属性,目的是用以存储该单例对象:
private static $obj;
//第3步:定义一个公开的静态方法,从中判断并实例化一个对象并返回该对象(单例对象)
static function G(){
if( !isset (static::$obj )){
static::$obj = new static();
}
return static::$obj;
}
//第4步:私有化克隆方法,以防止克隆
private funciton __clone(){}
}
这样的话,我们在实例化对象的时候静态的变量会存储这个对象,如果我实例化两次的时候,只会返回一个对象,避免了资源的浪费~