什么是单例模式
单例模式是常用的设计模式之一,通过单例模式创建的类在当前进程中只有一个实例。
三大特点
- 只能有一个实例
- 构造函数和克隆函数私有化
- 对外提供一个获取实例的方法
使用场景
在数据库、进程池、打印机、对话框都是使用单例模式
上代码
<?php
class Single
{
//先声明一个保存唯一实例的静态成员变量
private static $_instance;
//构造函数和克隆函数设置为私有,避免外部类覆盖
private function __construct()
{
}
private function __clone()
{
// TODO: Implement __clone() method.
}
//最后提供一个外部可以访问的返回实例的静态方法
public static function getInstance()
{
if (!self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
//以下为测试代码
private $name = '';
public function setName($name)
{
$this->name = $name;
echo 'set ok:' . $name . "<br>";
}
public function getName()
{
echo 'name is:' . $this->name . "<br>";
}
}
测试
上面代码增加了测试的部分代码,下面的测试代码可直接调用
$a = Single::getInstance();
$b = Single::getInstance();
$a->setName('zp');
$b->setName('xb');
$a->getName();
$b->getName();