单例模式:确保某一个类只有一个示例,并且自行实例化,向整个系统提供业务。
为什么使用它:
1.使用这种模式可以大量new操作消耗资源,php中数据库的应用比较常见,这样可以减少对数据库的连接。
2.可以实现一个类控制全局的配置信息。
缺点:
1.每次访问请求时都需要检测是否存在该类实例,可以通过使用静态初始化解决此问题。
php简单示例:
//单例模式
class Single
{
//静态变量保存对象
static private $instance;
//实例化的一些参数
private $config;
//防止直接被创建
private function __construct($config)
{
$this->config = $config;
}
//防止被克隆
private function __clone() {}
//对外访问
static public function getInstance($config)
{
//$instance是否是Single的对象
if(!self::$instance instanceof self)
{
self::$instance = new self($config);
}
return self::$instance;
}
/**
* 一些其他的成员方法,这里举一个例子
*/
public function getId()
{
//如果config中有id
return $this->config['id'];
}
}
//使用
$config = ['id' => 1];
$obj = Single::getInstance($config);
echo $obj->getId();
//输出 1