En Java, nous utilisons le bloc d'initialisation statique:
private static final ApiKey API_KEY; static { API_KEY = new ApiKey(); }
Merci d'avance. p> p>
3 Réponses :
Dans une certaine mesure, c'est une question de goût. Pour moi, ça va aussi longtemps que:
Les statiques ont tendance à écrire de bons tests plus difficiles. Si vous ne trouvez jamais que vous voulez commencer à modifier l'état statique, vous devez probablement regarder la conception à nouveau. P>
envisager de regarder Google Guice et son très sympa Mise en œuvre singleton . P>
Bien sûr, si votre application est une expérience de 10 lignes à une seule classe, cela compte beaucoup moins. P>
Notez que dans votre exemple, vous pouvez simplifier: P >
private static final ApiKey API_KEY = new ApiKey();
Vous pouvez éviter d'utiliser un bloc d'initialisateur statique complètement à l'aide du code suivant: ou p> si la création de la clé API nécessite plus qu'un simple appel de constructeur. Cela rend le code plus lisible, imho. Mais cela n'a pas beaucoup d'importance. P> L'initialiseur statique est utile lorsque deux champs statiques dépendent du même code d'initialisation: p> mais même alors, A et B ont peut-être pu être refacturés dans un seul objet, qui serait créé dans une seule méthode. P> P>
J'aime utiliser Enums dans la mesure du possible.
au lieu de p> J'écrirais p>
Je vais commenter car il n'y a pas de réponse "noire ou blanche" à votre question. Personnellement, je ne trouve pas l'accesseur statique un bon ami de programmeurs. L'injection de dépendance est une très belle alternative qui aide également beaucoup lorsqu'il s'agit de tester.
J'ai vu un code dans lequel de nouveaux threads sont démarrés dans le bloc statique. :) c'était très mauvais.