单例模式是保证其全局只有一个实例对象。
核心的是一个下面的静态方法和静态的成员变量、
静态方法的主要逻辑就是:如果之前这个类已经被生成过对象了,会用静态属性保存该对象,那么它再次示例化时就会返回这个已经被创建过的对象(静态属性)
构造函数为什么要私有:确保这个类不能被动态实例化
特点:单例模式的方法和属性全局共享,无论在哪里调用方法改变数据都会跟随全局改变

代码示例:
class Singleton
{
private static $uniqueInstance;
private $singletonData = '单例类内部数据';
private function __construct()
{
// 构造方法私有化,外部不能直接实例化这个类
}
public static function GetInstance()
{
if (self::$uniqueInstance == null) {
self::$uniqueInstance = new Singleton();
}
return self::$uniqueInstance;
}
public function SingletonOperation(){
$this->singletonData = '修改单例类内部数据';
}
public function GetSigletonData()
{
return $this->singletonData;
}
}
在Java等静态语言中,静态变量可以直接new对象,在声明$instance的时候直接给他赋值,
比如 private static instance = new HttpService();这样可以省略掉GetInstance()方法,
但是这个静态变量不管用不用都会直接实例化出来占用内存。这种单例就叫做饿汉式单例模式
友情提示:
请勿水贴!!不反对适当水贴,适当的水贴可以活跃吧内氛围