04 02 2020

单例模式

模式定义

顾名思义就是创建单个实例的模式。

单例模式的优势

保证一个类仅有一个实例,并提供一个访问它的全局访问点。避免使用的类频繁地创建与销毁以致于造成不必要的消耗。

代码示例

Singleton\Singleton.class.php
<?php
namespace Singleton;

class Singleton
{
    private static $instance = null;

    private function __construct()
    {
    }

    public static function getInstance()
    {
        if(static::$instance == null) {
            static::$instance = new static();
        }

        return static::$instance;
    }
}


Singleton\SingletonTest.php
<?php
spl_autoload_register(function ($className){
   $className = str_replace("\\", "/", $className);
   include $className . ".class.php";
});

use Singleton\Singleton;

$instance = Singleton::getInstance();
$instance1 = Singleton::getInstance();

echo $instance === $instance1 ? "单例" : "非单例";


运行示例:

php Singleton/SingletonTest.php

输出:
单例


总结

简单说来,单例模式的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点。 常见使用实例:数据库连接器;日志记录器(如果有多种用途使用多例模式);锁定文件。



代码地址:https://github.com/798256478/design-patterns/tree/master/Singleton