在开发中,我们常常会遇到类的多次加载的问题,而我们实际又只需要加载一次即可,故出现了单例设计模式。
- 只需要 new 一次即可
- 保证不能被覆盖
- 保证不能被克隆
<?php
class Single
{
private static $instance = null;
public static function getInstance()
{
if (self::$instance==null) {
self::$instance=new self();
return self::$instance;
}
return self::$instance;
}
//方法前加上final,则方法不能被覆盖,类前加final,则类不能被继承
final protected function __construct()
{
}
//防止被克隆
final protected function __clone()
{
}
}
$s1 = Single::getInstance();
$s2 = Single::getInstance();
if ($s1 === $s2) {
echo "同一个对象";
} else {
echo "不是同一个对象1";
}