<?php
namespace DesignPattern\Single;
/**
* Class Single
* 单例设计模式:
* 实现功能: 单例设计模式的类只能有一个对象
* 实现目的: 为了节约资源避免资源浪费
* 使用场景: 数据库操作类(假设只需要一个链接)
* 实现过程(思路):
* 1. 私有化构造方法,和克隆,在类外不能够创建对象
* 2. 提供一个静态方法, 获取这个类的实例
*/
class Single
{
/**
* 存储类的实例
* @var $_instance
*/
private static $_instance = null;
/**
* 获取类的实例, 如果实例已经存在,就直接返回,不存在就创建一个
* @return Single
*/
public static function instance()
{
if (is_null(self::$_instance)) {
self::$_instance = new self;
}
return self::$_instance;
}
/**
* 私有构造方法,外界不能使用new关键字对象
* Single constructor.
*/
private function __construct()
{
}
/**
* 禁止克隆,防止通过 clone 关键字克隆对象
*/
private function __clone()
{
}
/**
* 防止对象被序列化
*/
private function __sleep()
{
}
/**
* 防止反序列化对象
*/
private function __wakeup()
{
}
}
$object1 = Single::instance();
$object2 = Single::instance();
var_dump($object1 === $object2); // true
原文:https://www.cnblogs.com/liaohui5/p/10581515.html