Bonjour,

j'aurais une question toute naïve et sans prétention : je ne suis ni expert java, ni expert c#, mais, étant tombé sur deux bouts de codes définissant le pattern singleton sur wikipedia, l'un en java, l'autre en c#, j'ai été surpris de voir leur forte similitude, surtout comparé aux autres exemples dans d'autres langages, qui eux étaient bien différents (c++, python, vb.net ...):

singleton java:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Singleton {
     private static Singleton INSTANCE = null;
 
     /**
      * La présence d'un constructeur privé supprime
      * le constructeur public par défaut.
      */
     private Singleton() {}
 
     /**
      * Le mot-clé synchronized sur la méthode de création
      * empêche toute instanciation multiple même par
      * différents threads.
      * Retourne l'instance du singleton.
      */
     public synchronized static Singleton getInstance() {
         if (INSTANCE == null) 
             INSTANCE = new Singleton();
         return INSTANCE;
     }
 }

singleton c#:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Singleton
{
    private static Singleton _instance;
 
    private Singleton() 
    {
 
    }
 
    public Singleton getInstance() 
    {
        lock (this)
        {
	    if (_instance== null) 
	       _instance= new Singleton();
 
 
	    return _instance;
        }
    }
}

Pour les autres langages, le lien:
http://fr.wikipedia.org/wiki/Singlet...de_conception)


Ma question : quelles sont les différences fondamentales entre java et c# ?

Merci.