Bon usase de fonctions static ou de singleton
:salut:
J'ai une question par rapport à quelle est la bonne pratique et quelle est la mauvaise pratique et pourquoi ?
Supposons que je veuille réaliser une "bibliothèque" de fonctions (pour l'exemple on dira les fonctions addition et soustraction d'entiers).
Première solution :
Je réalise une classe qui contient mes deux fonctions déclarées en static :
Code:
1 2 3 4 5 6 7 8 9 10
| public class MathUtils {
public static int add(int a, int b) {
return a+b;
}
public static int sub(int a, int b) {
return a-b;
}
} |
Deuxième solution :
Je réalise un singleton pour qui contient mes deux fonctions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class MathUtils {
private MathUtils() {}
private static MathUtils INSTANCE = new MathUtils();
public static MathUtils getInstance() {
return INSTANCE;
}
public int add(int a, int b) {
return a+b;
}
public int sub(int a, int b) {
return a-b;
}
} |
Mon avis : J'ai l'impression que c'est deux implémentation sont équivalentes (à part peut-être en terme de performance et de compilation). Je trouve donc juste l'utilisation d'un singleton plus "lourd" (=plus de code pour résultat équivalent). J'utiliserais donc plutôt la première solution.
Mais je me pose quand même ces questions :
- Y a-t-il une différence de performance entre ces deux solutions ?
- ]Quelle est la bonne pratique (=la solution la plus "java") ?
- Pourquoi l'autre n'est pas une bonne pratique ? Dans quels cas alors l'utiliser ?
- Dans la première solution, faut-il déclarer la class comme static et/ou abstract ? et pourquoi ?
- Est-ce que j'ai tout faux est la bonne solution est aucune de celles proposées ?