Creational --- Singleton

Purpose:

This is considered to be an ANTI-PATTERN! We could use dependency injection to replace this pattern.

To have only one instance of object in the application that will handle all calls.

<?php

namespace DesignPatterns\Creational\Singleton;

final class Singleton
{
    /**
    * @var Singleton
    */
    private static $instance;

    /**
        * Gets the instance via lazy initialization (created on first usage)
        *
        * @return Return Singleton
    */
    public static function getInstance(): Singleton
    {
        if (null === static::$instance) {
            static::$instance = new static();
        }

        return static::$instance;
    }

    /**
        * Private the constructor
        *
        * @return Void
    */
    private function __construct()
    {
        // Code Here
    }

    /**
        * Prevent the instnace from being cloned (which would create a second instance of it)
        *
        * @return Void
    */
    private function __clone()
    {
        // Code Here
    }

    /**
        * Prevent from being unserialized (which would create a second instance of it)
        *
        * @return Return
    */
    private function __weakup()
    {
        // Code Here
    }
}

  

posted @ 2019-05-08 15:34  Victor!!!!  阅读(146)  评论(0编辑  收藏  举报