laravel程序员

Laravel中的设计模式(一)——单例模式

2017-06-22  本文已影响739人  稳健补刀的少年
image

1、为什么要使用单例模式

有一些对象其实我们只需要一个。比如线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(register)对象等。

比如说我们在系统运行时候,就需要加载一些配置和属性,这些配置和属性是一定存在了,又是公共的,同时需要在整个生命周期中都存在,所以只需要一份就行,这个时候如果需要我再需要的时候new一个,显然是浪费内存并且再赋值没什么意义,所以这个时候我们就需要单例模式。

2、怎么实现单例模式

3、PHP实现一下

<?php

class Singleton {
    private static $instance = null;

    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    private function __construct()
    {

    }

    private function __clone()
    {

    }
}

$demo = Singleton::getInstance();
$demo2 = Singleton::getInstance();
echo $demo===$demo2 ? 1 : 2;
echo "\n";

以上代码执行结果

1

4、在Laravel中的应用

在laravel bootstrap/app.php文件中,可以看到几行类似如下的代码。这就是在laravel的容器中注册了几个核心类的单例。当然你也可以自己在 app/Providers 中写一个单例的服务。

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);
上一篇 下一篇

猜你喜欢

热点阅读