首页 PHP 正文
237

设计模式之单例模式

单实例模式是指在代码运行整个期间只允许某个类只有一个实例。像有些框架中的路由类、数据库连接类、配置文件类等都有用到单实例模式,这样的好处是节约系统开销,并且有些情况下能保正数据一致性。
/**
*单实例模式
*/
class Singleton{
    /**
    *使用私有的静态变量保存实例,防止外部修改。
    */
    private static $instance;
    private $time;
    
    /**
    *将构造方法限制为私有方法,防止随意新建实例
    */
    private function __construct(){
        $this->time = date('Y-m-d H:i:s');
    }
    
    /**
    *将克隆方法限制为私有方法,防止实例被克隆
    */
    private function __clone(){}
    
    /**
    *提供获得实例的唯一入口
    */
    static function getInstance(){
        if(!(static::$instance instanceof static)){ //到底是使用self还是static请参考另一博文
            static::$instance = new static();
        }
        return static::$instance;
    }
    
    public function doAction(){
        echo 'This instance was created at '.$this->time.'(Execute time:'.date('Y-m-d H:i:s').')<br>';
    }
}

$singleton = Singleton::getInstance();

$singleton->doAction();

sleep(10);

$singleton->doAction();

正在加载评论...