单例模式

单例模式能起到什么效果

控制实例数目,节省系统资源。

演示代码

<?php
class NumberControl {

    private static $_Control;

    private $number = 0;

    private function __construct()
    {
        echo "Running Number Control" . PHP_EOL;
    }

    public static function getInstance()
    {
        if(self::$_Control === null)
        {
            self::$_Control = new self();
        }
        return self::$_Control;
    }

    /**
     * @return int
     */
    public function getNumber(): int
    {
        return $this->number;
    }

    /**
     * @param int $number
     */
    public function setNumber(int $number): void
    {
        $this->number = $number;
    }
}

$firstControl = NumberControl::getInstance();
$firstControl->setNumber(1);
echo $firstControl->getNumber() . PHP_EOL;    // 1
$secondControl = NumberControl::getInstance();
echo $secondControl->getNumber() . PHP_EOL;   // 1
$secondControl->setNumber(2);
echo $firstControl->getNumber() . PHP_EOL;    // 2
echo $secondControl->getNumber() . PHP_EOL;   // 2

运行结果

1584686378.png

注意

  1. 单例类只能有一个实例。
  2. 单例类必须是自己创建自己的唯一实例。
  3. 单例类的构造方法应该为私有方法,防止外部实例化。

知识参照


Lost_Memery
1 声望0 粉丝