设计模式之单例模式

基本介绍

整个请求生命周期内只实例化一次目标类,可以节省内存消耗

demo

<?php


namespace App\study;


/**
* Desc:单例模式
* Author:glt 2022/1/10 17:51
*/
class Single
{
   //静态私有属性,存放对象
   private static $instance;
   //私有构造方法,防止外部实例化
   private function __construct()
   {
   }
   //私有克隆方法,禁止外部克隆
   private function __clone()
   {
   }
   //唯一入口获取对象
   public static function getInstance()
   {
       if (!self::$instance instanceof self) {
           self::$instance = new self();
       }
       return self::$instance;
   }
   //用于测试多次实例化对象是否是同一个
   public $a;
}

测试脚本

    /**
     * Desc:单例模式测试
     * Author:glt 2022/1/10 18:32
     */
    public function single()
    {
        $instance1 = Single::getInstance();
        $instance2 = Single::getInstance();
        $instance1->a = 11;
        var_dump($instance1,$instance2);
        $instance2->a = 22;
        var_dump($instance1,$instance2);
    }
posted @ 2022-06-29 19:43  gltttt  阅读(31)  评论(0)    收藏  举报