Nous connaissons tous le log, ok, mais pourquoi devrions-nous considérer la classe «Logger» comme une singleton? Que se passe-t-il si nous le faisons comme un non classe -singleton normale?Pourquoi devrions-nous considérer la classe «Logger» comme un singleton?
Répondre
J'ai trouvé ceci ici sur le site IBM. Il explique assez bien l'utilisation d'une classe Logger Singleton.
Un exemple classique d'un véritable singleton est un service de l'exploitation forestière. Supposons que nous ayons un service de consignation basé sur un événement: Les objets Client demandent que le texte soit consigné par en envoyant un message au service de consignation . D'autres objets enregistrent en fait le texte quelque part (console, fichier, ) en écoutant le service de consignation pour ces demandes de consignation et en les manipulant. Tout d'abord, notez que le service de journalisation passe le test classique pour être un singleton:
- Plaignants ont besoin d'un objet bien connu auquel envoyer des demandes de journal. Cela signifie un point global d'accès .
- Étant donné que le service de journalisation est une source d'événement unique à laquelle plusieurs écouteurs peuvent s'inscrire, seul doit être une instance.
Voici le lien: Use your singletons wisely
Si vous utilisez pas une classe singleton que vous auriez à faire face à la synchronisation (écrire dans un fichier, ou tout flux que vous utilisez) entre ces différents enregistreur instances. Donc, c'est beaucoup plus facile, quand vous avez juste une instance globale de Logger.
Dépend de la structure de journalisation. Habituellement, vous voulez que tous les messages se retrouvent dans un seul journal, vous voulez donc que tout le code utilise le même enregistreur. Mais la classe logger n'a pas besoin d'être un singleton pour s'en assurer.
Le problème principal est celui où le journal actuel est conservé.
Si vous écrivez sur un système de fichiers, le fait d'avoir plusieurs instances (et donc, probablement, plus d'un thread) peut entraîner un fichier tronqué. Dans le sens où, en fonction de la mise en mémoire tampon et d'autres mécanismes de bas niveau, les messages d'une écriture peuvent être mélangés avec des messages (ou des parties de messages) provenant d'autres personnes.
Cela peut être un problème mineur, mais c'est le seul que je peux penser à propos d'avoir un seul objet d'écriture de journal (et donc en série).
Si vous avez plusieurs flux de journal avec un contenu différent, vous pouvez utiliser plusieurs instances de la classe de consignateur initialisée pour les différentes sorties. Toutefois, si vous avez un seul flux de journal, la présence de plusieurs instances de classe Logger entraîne une implémentation plus complexe, car les instances doivent travailler ensemble pour gérer la ressource réelle. Considérons par exemple un enregistreur qui enregistre chaque message avec un numéro de séquence. Deux instances devront synchroniser leurs compteurs de séquence, ce qui leur demande de se connaître, de négocier des augmentations de compteur, etc.(L'alternative d'avoir un compteur partagé dans un membre de classe statique équivaut à avoir un enregistreur singleton)
- 1. Puis-je considérer ce projet comme un cadre?
- 2. MIDlet comme singleton
- 3. Singleton dans la classe Flex
- 4. Quelqu'un at-il déjà utilisé boost :: singleton avec boost :: logger?
- 5. Editor ne pas considérer MultilineStringEditor comme un éditeur unique,
- 6. Devrions-nous considérer Flash comme un dernier recours?
- 7. Extension une classe singleton
- 8. JTextArea comme écouteur pour log4j Logger
- 9. PDO utilisant singleton stocké comme propriété de classe
- 10. Comment faire en tant que client dll et la classe logger devrait fonctionner comme service
- 11. C++ - Classe singleton
- 12. singleton en classe abstraite php
- 13. l'implémentation de la classe singleton pour Actionscript
- 14. WCF serviceType comme une instance singleton
- 15. PHP: Singleton vs statique Classe
- 16. se moquant d'une classe singleton
- 17. Classe Singleton dans l'objectif c
- 18. Comment implémenter la journalisation dans un singleton enum?
- 19. Question générale à propos de la classe Ruby singleton
- 20. Création d'une nouvelle classe non-singleton basée sur une classe singleton
- 21. Application Logger
- 22. Pourquoi ma classe singleton ne peut-elle pas renvoyer une valeur qui restera dans la portée
- 23. Peut-on considérer un modèle de conception comme un niveau en application j2ee
- 24. Singleton Models Doctrine
- 25. Quelle est la différence exacte entre la classe statique PHP et la classe singleton
- 26. BlackBerry logger
- 27. MethodNotFound, classe singleton et "optimiser le code"
- 28. Maven Plugin Logger Compatibilité
- 29. Différences entre la classe singleton/static classe/instance avec un ctor privé?
- 30. cours singleton