您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Laravel中的设计模式(一)——单例模式

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

来源:二三娱乐
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
);

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务