本文共 2002 字,大约阅读时间需要 6 分钟。
单例设计模式 (单态) 定义: 一个类 只能允许有 一个对象存在. 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! 不是同一个实例";}
第五步是成品,前面4步都是一步一步的推的!
转载于:https://www.cnblogs.com/forqiwen/p/8949508.html