PHP设计模式(一)

2019-02-27  本文已影响0人  zyn_10

单例模式

  1. 单例模式的目的是在应用程序调用的时候,只能获取一个对象实例,避免每次都new一个实例,减少资源消耗。常见于数据库链接。但是单例模式是一个公认的反面模式,为了获取更好的可测试性和可维护性,可以使用 依赖注入
  2. 代码
<?php 
namespace DesignPatterns\Creational\Singleton;

final class Singleton
{
    /**
     * 单例的属性要是静态属性
     *
     */
    private static $instance;

    /**
     * 通过懒加载获得实例(在第一次使用的时候创建)
     */
    public static function getInstance(): Singleton
    {
        if (null === static::$instance) {
            static::$instance = new static();
        }

        return static::$instance;
    }

    /**
     * 不允许从外部调用以防止创建多个实例
     * 要是用单例,必须使用 Singleton::getInstance() 方法获取实例
     */
    private function __construct()
    {
    }

    /**
     * 防止实例被克隆(这回会创建实例的副本)
     */
    private function __clone()
    {
    }

    /**
     * 防止反序列化(这将创建它的副本)
     */
    private function __wakeup()
    {
    }
}
上一篇下一篇

猜你喜欢

热点阅读