Comment puis-je implémenter l'annotation @Singleton?
Éventuellement une répétition de la question. Mais j'ai besoin de mettre en place quelque chose comme
@Singleton
public class Person {
}
Qui assurera une seule instance de l'objet Personne.
Une façon est de faire de constructeur privé. Mais que fait le Singleton annotation redondant.
Je ne pouvais pas vraiment comprendre si je peux vraiment restreindre la création d'objet à objet unique, sans faire le constructeur privé.
Est-il même possible?
source d'informationauteur user1401472
Vous devez vous connecter pour publier un commentaire.
Aucune annotation peut éviter une classe d'être instanciée. Toutefois, si vous prévoyez de mettre en place quelque chose comme une infrastructure d'Injection de Dépendance, ou juste un simple objet d'usine, vous pouvez utiliser la réflexion pour lire l'annotation et d'empêcher la classe d'être instancié plusieurs fois, mais je comprends que ce n'est pas la réponse que vous recherchez.
Vous pouvez réellement penser à les laisser tomber le pattern singleton et le déplacement de certains solution plus moderne comme une bonne DI-cadre, qui peut vous donner le même résultat - avec plus de souplesse.
C'est la bonne façon de mettre en œuvre singleton. L'annotation ne peut pas empêcher les gens d'appeler le constructeur public.
Exemple
@Singletone
modèle de mise en œuvre qui est thread-safe:Puis il suffit d'utiliser ce code pour obtenir votre Singletone et être sûr:
Ou vous pouvez utiliser une Injection de Dépendances des bibliothèques. Dagger2 par exemple: