• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PHP的单例设计模式详解

武飞扬头像
Luke
帮助3440

 
/* 单例设计模式 (单态) 定义: 一个类 只能允许有 一个对象存在. 
1.不让进: 使类不能被实例化 
2.留后门: 设置静态方法
 3.给对象: 在静态方法里实例化该类
 4.判初夜: 判断是否是 第一次产生该类的对象 
5.设静态: 静态方法里 要使用静态属性 
*/
 /*//1.不让进: 使类不能被实例化----------------- 
class Test { 
// 设置 一个封装的构造方法 
    private function __construct() 
    { 
    //占位, 我就是不让你NEW我~~~ 
    } 
}*/ 
/*//2.留后门: 设置静态方法-------------------- 
class Test { 
    // 设置 一个封装的构造方法
     private function __construct() 
    { 
        //占位, 我就是不让你NEW我~~~ 
    } //后门
     public static function getObject() 
    { 
        echo "啊,我是后门,进吧!
";
     }
 }*/
 /*//3.给对象: 在静态方法里实例化该类------------------ 
class Test { 
// 设置 一个封装的构造方法 
    private function __construct() 
    {
        //占位, 我就是不让你NEW我~~~
     } //后门 
    public static function getObject() 
    { 
        echo "啊,我是后门,进吧!
"; return new self();//实例化一个对象给你
    } 
}*/ 
/*//4.判初夜: 判断是否是 第一次产生该类的对象------------------ 
class Test { 
    private $obj = null;//属性值为对象,默认为null // 设置 一个封装的构造方法 
    private function __construct() { 
        //占位, 我就是不让你NEW我~~~ 
    } //后门 
    public static function getObject() 
    {
       echo "啊,我是后门,进吧!
"; 
          if ($this->obj === null)
        { 
           $this->obj = new self();//实例化一个对象
              } 
             //返回的属性 其实就是本对象 
        return $this->obj;
    }
}*/ 
//5.设静态: 静态方法里 要使用静态属性------------------ 
class Test { 
    private static $obj = null;//属性值为对象,默认为null 
    // 设置 一个封装的构造方法 
    private function __construct() 
    { 
        //占位, 我就是不让你NEW我~~~ 
    } //后门 
    public static function getObject()
    { 
        echo "啊,我是后门,进吧!
"; 
        if (self::$obj === null) 
        { 
             self::$obj = new self();
//实例化一个对象
         } 
        //返回的属性 其实就是本对象
        本文出至:学新通博客网络博客; return self::$obj; 
    } 
} 
/*Test::getObject();//使用静态方法访问该类里的方法 exit;*/
$t1 = Test::getObject();
$t2 = Test::getObject(); 
$t3 = Test::getObject();
$t4 = Test::getObject();
$t5 = Test::getObject();
$t6 = Test::getObject(); 
$t7 = Test::getObject();
$t8 = Test::getObject(); 
//判断 两个对象 是否是同一个对象
if ($t1 === $t6) { 
   echo "哦, Yes! 是同一个实例
"; 
} else {
    echo "哦, No! 不是同一个实例
";
}


这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanecih
系列文章
更多 icon
同类精品
更多 icon
继续加载