Archive for the ‘design patterns’ Category

Design pattern: il Singleton

Domenica, Febbraio 24th, 2008

Quando si vuole avere una sola istanza di una certa classe il singleton pattern è la soluzione ideale, qui di seguito vedremo l’implementazione in php.

class Singleton
{
    private $_instance;

    public static function getInstance()
    {
        if(is_null(self::$_instance))
        {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    ...
}

Come avrete notato l’istanza viene creata solo alla prima chiamata di getInstance() (lazy initialization).

Questa implementazione è corretta per quanto riguarda php ma In altri linguaggi come Java, dove l’avere più thread concorrenti è la normalità, occorre garantire la mutua esclusione in quanto la creazione della prima istanza è una corsa critica.

Approfondimenti: wikipedia