Singleton ou pas singleton ?
Bonjour,
J'aurai souhaité avoir vos éclairages sur une comparaison entre les deux codes suivant.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class TestSingletonClass {
private static String strTestA;
private static String strTestB;
private static TestSingletonClass monInstance = null;
private TestSingletonClass() {
strTestA = "mon TEST a";
strTestB = "mon TEST b";
}
public static TestSingletonClass getInstance() {
if(monInstance == null) {
monInstance = new TestSingletonClass();
}
return monInstance;
}
public static void getStrings() {
System.out.println("strTestA : " + strTestA);
System.out.println("strTestB : " + strTestB);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class TestStaticClass {
private static String strTestA;
private static String strTestB;
static {
strTestA = "mon test A";
strTestB = "mon test B";
}
public static void getStrings() {
System.out.println("strTestA : " + strTestA);
System.out.println("strTestB : " + strTestB);
}
} |
En usage intensif d'appel à la méthode "getStrings()", le premier cas est légèrement plus long que le second cas. (appels :
Code:
TestStaticClass.getStrings();
et
Code:
TestSingletonClass.getInstance().getStrings();
)
Mais en mémoire comment cela se passe ?
Le deuxième code conserve avec la portion "static" d'initialisation des variables crée t'elle bien une seule fois les contenu des variables "strTestA" et "strTestB" en mémoire ?
L'usage d'un singleton a t'il un quelconque intérêt dans le cas présent ?