Les Snippets

Connexion

Une classe Singleton (Instance unique d'une class)

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/03/2006 00:12:27 et initié par Nix [Liste]
Vue : 13410
Catégorie(s) : Class
Langages dispo pour ce code :
- VB 2005, VB.NET 1.x
- C# 1.x, C# 2.x
- PHP 5
- Java
- C# 1.x, C# 2.x
- C++



Langage : VB.NET 1.x , VB 2005
Date ajout : 18/03/2006
Posté par Nix [Liste]
Public Class MaClasseSingleton 
  Private Shared _MaClasseSingleton As MaClasseSingleton

  ' GetInstance permet de récupérer une instance unique de "MaClasseSingleton"
  Public Shared Function GetInstance() As MaClasseSingleton 
    If _MaClasseSingleton Is Nothing Then
      _MaClasseSingleton = New MaClasseSingleton 
    End If


 
    Return _MaClasseSingleton 
  End Function
  Private Sub New() 
  
  End Sub
End Class




Langage : C# 1.x , C# 2.x
Date ajout : 18/03/2006
Posté par Nix [Liste]

public class MaClasseSingleton

  {
    private static MaClasseSingleton _MaClasseSingleton; 

    // GetInstance permet de récupérer une instance unique de "MaClasseSingleton"
    public static MaClasseSingleton GetInstance() 
      {
        if (_MaClasseSingleton == null) 
          {
            _MaClasseSingleton = new MaClasseSingleton(); 
          }
        return _MaClasseSingleton; 
      }
  private MaClasseSingleton() 
    {
  
    }

  }

Langage : PHP 5
Date ajout : 18/03/2006
Posté par Cyrille2 [Liste]
<?php
class Singleton
{
//----------------------------------------------------------------- PUBLIC
//----------------------------------------------------- Méthodes publiques
    // public type Méthode ( liste des paramètres );
    // Mode d'emploi :
    //
    // Contrat :
    //
    
    final public static function GetInstance ( )
    // User's manual :
    //Getter of the unique instance. Create this if doesn't exist
    //
    // Contract :
    //
    {
        if ( ! IsSet ( self::$instance ) )
        // instance creation
        {
            child::$instance = new self();
        }
        
        return self::$instance;
    } // End of GetInstance
//-------------------------------------------- Constructeurs - destructeur
    protected function __construct()
    // Mode d'emploi (constructeur) :
    //
    // Contrat :
    //
    {
    
    } // End of __construct
    public function __destruct ( )
    // Mode d'emploi :
    //Libère l'espace mémoire des variables de la classe
    // Contrat :
    //
    {   
    } //---- Fin du destructeur
//------------------------------------------------------ Méthodes Magiques
    public function __ToString ( )
    // Mode d'emploi :
    //Si non redéfinie, imprime un etat de l'objet
    //
    // Contrat :
    //
    {
        return (string)var_export($this);
    } // End of __ToString
    
//------------------------------------------------------------------ PRIVE 
//----------------------------------------------------- Méthodes protégées
    // protected type Méthode ( liste des paramètres );
    // Mode d'emploi :
    //
    // Contrat :
    //
//----------------------------------------------------- Attributs protégés
    protected static $instance; // handler of instance
}
Langage : Java
Date ajout : 18/03/2006
Posté par neodante [Liste]

public class MaClasseSingleton
{
    private static MaClasseSingleton instance = new MaClasseSingleton();

    // Mettre le constructeur par défaut en private
    private MaClasseSingleton() { }
    public static MaClasseSingleton getInstance()
    {

        // Double vérification 
        if (instance == null)
        {
            synchronized(MaClasseSingleton.class) {
                if (instance == null)
                    instance = new MaClasseSingleton();
            }
        }
        return instance;
    }
}


Remarque :
Code uniquement à partir de Java 5.
Pour les versions antérieures, il est important de déclarer l'instance en tant que volatile !
Langage : C# 1.x , C# 2.x
Date ajout : 22/03/2006
Posté par sebmafate [Liste]

public class MaClasseSingleton

  {
    private static const MaClasseSingleton _MaClasseSingleton = new MaClasseSingleton(); 

    // GetInstance permet de récupérer une instance unique de "MaClasseSingleton"
    public static MaClasseSingleton GetInstance() 
      {
        return _MaClasseSingleton; 
      }
  private MaClasseSingleton() 
    {

    }

  }

Remarque :
Solution alternative à celle de Nix qui permet d'économiser le test à chaque appel de GetInstance()
Langage : C++
Date ajout : 14/05/2006
Posté par exar [Liste]

class MaClasseSingleton{
private:
   static MaClasseSingleton s;
   MaClasseSingleton();
   MaClassSingleton(const MaClasseSingleton&);
   MaClasseSingleton& operator=(const MaClasseSingleton&);
public:
   static MaClasseSingleton& GetInstance(){
      return s;
   }
};

MaClasseSingleton MaClassSingleton::s;


Snippets en rapport avec : Class, Singleton, Instance, Unique



Codes sources en rapport avec : Class, Singleton, Instance, Unique

{C# / C#.NET} INSTANCE UNIQUE + COMMUNICATION DE MESSAGES (COMPATIBLE 32 ET 64 BIT)
Cette DLL permet d'avoir une instance unique d'un programme en plus de permettre: 1. La communicat...

{JAVA / J2EE} UNE SEULE INSTANCE DE PROGRAMME SANS SOCKET
Dans le cadre d'un projet, je devais mettre en place un système multi-agents sur un réseau très sécu...

{JAVA / J2EE} INSTANCE UNIQUE D'UNE APPLICATION
La demande revenant souvent sur les forums (et ayant cherché moi-même par le passé), j'ai développé ...

{Visual Basic, VB6, VB.NET, VB 2005} INSTANCE UNIQUE DE VOTRE APPLICATION
App.PrevInstance, oui, ok... mais ca ne permet que de savoir si l'exe courant a été lancé ou non....

{PHP} PHP5 - INSTANCIATION UNIQUE DE CLASSE VIA MULTITON
Wowowow, avec un titre aussi compliqué je me demande comment vous avez fait pour venir jusqu'ici :) ...

{C / C++ / C++.NET} UNIQUE INSTANCE PROG (WIN32)
2 projets dans le zip pour 2 methodes. Les 2 methodes ramenent, si c'est le cas, l'ancienne instanc...

{Visual Basic, VB6, VB.NET, VB 2005} CONVERTIR DU CODE HTML TEXTE AU FORMAT HTML (EN VB6 ET VBA) [MODULE DE CLASSE]
Voici une petite classe qui vous permettra de convertir une chaine HTML au format HTML afin d'êt...

{PHP} SYSTÈME DE CACHE POUR SITE EN PHP5
Bonjour, Je poste ma première source. C'est un système de cache pour PHP5 assez performant. Je m'...

{PHP} CATAPULT FRAMEWORK, VERSION 0.1 : "ORIGIN"
Bonjour à tous. Bon voilà un énorme travail sur lequel je suis depuis un long moment. Je réalise u...

{PHP} GERER UN ENTREPOT VIA PHP 5 MYSQL VERSION OBJET ( PDO)
bonjour j'essaye de vers évoluer ma source gérer un entrepôt via php mysql en version objet J'ai...