其他分享
首页 > 其他分享> > 单例模式(Singleton Pattern)

单例模式(Singleton Pattern)

作者:互联网

使用场景:

实现:

Singleton.php

<?php


class Singleton
{
    private static $obj;
    private $str = '默认数据';

    private function __construct()
    {
        // 构造方法私有化,外部不能直接实例化这个类
    }

    /**
     * 判断对象,使对象全局唯一
     * @return Singleton
     */
    public static function call()
    {
        if (self::$obj == null) {
            self::$obj = new Singleton();
        }
        return self::$obj;
    }

    /**
     * 修改数据
     */
    public function setStr(){
        $this->str = '修改数据';
    }

    /**
     * 获取数据
     * @return string
     */
    public function getStr()
    {
        return $this->str;
    }
}

最主要的就是call方法,判断使对象唯一并实例化用静态变量保存。

调用:

$demo1 = Singleton::call();
echo $demo1->getStr();
echo "\n";
$demo2 = Singleton::call();
echo $demo2->getStr();
echo "\n";
$demo1->setStr();
echo $demo1->getStr();
echo "\n";
echo $demo2->getStr();

 可以看出,demo1和demo2的值是一样的,做到了全局唯一。

标签:Singleton,Pattern,getStr,demo2,demo1,call,单例,echo
来源: https://www.cnblogs.com/szrhsd/p/15266193.html