Tutti conosciamo il registro, ok, ma perché dovremmo considerare la classe «Logger» singleton? Cosa succede se lo rendiamo normale come non -singolo di classe?Perché dovremmo considerare la classe «Logger» come un singleton?
risposta
L'ho trovato qui sul sito IBM. Spiega piuttosto bene l'uso di una classe di Logger Singleton.
Un classico esempio di un vero e proprio Singleton è un servizio di registrazione. Supponiamo di avere un servizio di registrazione basato sugli eventi: gli oggetti client richiedono che il testo venga registrato da inviando un messaggio al servizio di registrazione . Altri oggetti in realtà registrano il testo da qualche parte (console, file, qualunque) ascoltando il servizio di registrazione per queste richieste di registrazione e gestendoli. In primo luogo, si noti che il servizio di registrazione passa il classico di test per essere un Singleton:
- I richiedenti hanno bisogno di un oggetto ben noto a cui inviare le richieste a registro. Questo significa un punto globale di accesso .
- Poiché il servizio di registrazione è una singola origine evento a cui possono essere registrati più ascoltatori , solo deve essere un'istanza.
Qui il link: Use your singletons wisely
Se non si desidera utilizzare una classe Singleton si dovrebbe avere a che fare con la sincronizzazione (scrittura in un file, o qualsiasi flusso si utilizza) tra questi diversi logger le istanze. Quindi è molto più semplice quando hai solo un'istanza di Logger globale.
Dipende dal framework di registrazione. Solitamente si desidera che tutti i messaggi vadano a un registro, quindi si desidera che tutto il codice utilizzi lo stesso programma di registrazione. Ma la classe dei taglialegna non deve essere un singleton per garantirlo.
Il problema principale riguarda la permanenza del registro effettivo.
Se si sta scrivendo su un filesystem, avere più di un'istanza (e quindi, probabilmente, più di un thread) potrebbe risultare in un file confuso.
Nel senso che, a seconda del buffering e di altri meccanismi di basso livello, i messaggi di una scrittura possono essere mescolati con messaggi (o parti di messaggi) da altri.
Questo può essere un problema minore, ma è l'unico che posso pensare di avere un solo oggetto di scrittura log (e quindi seriale).
Se si dispone di più flussi di log con contenuto diverso, è possibile utilizzare più istanze della classe del registratore inizializzata per i diversi output.
Tuttavia, se si dispone di un solo flusso di log, disporre di più istanze di classe del logger porta a un'implementazione più complessa, poiché le istanze devono collaborare per gestire la risorsa effettiva. Si consideri ad esempio un logger che registra ciascun messaggio con un numero di sequenza. Due istanze dovranno sincronizzare i loro contatori di sequenza, il che richiede loro di conoscersi l'un l'altro, negoziare aumenti del contatore e così via.(L'alternativa di avere un contatore condiviso in un membro di classe statico equivale ad avere un logger di singleton)
- 1. Quando dovremmo considerare l'utilizzo privato o protetto?
- 2. Perché la classe Singleton dovrebbe essere sigillata?
- 3. Quando dovremmo usare la classe e quando non dovremmo
- 4. Quando e perché dovremmo usare la classe System.ComponentModel.Container?
- 5. Perché dovremmo dichiarare un'interfaccia all'interno di una classe?
- 6. come utilizzare l'interfaccia con la classe singleton
- 7. Come testare la classe Singleton - C++?
- 8. Si sta estendendo una classe singleton errata?
- 9. Perché dovremmo rilasciare?
- 10. Perché @Singleton su @ApplicationScoped in Producers?
- 11. Classe Singleton in coffeescript
- 12. Come testare una classe Singleton?
- 13. Estendere classe astratta Singleton
- 14. Come ottenere la classe di un oggetto Singleton al momento della compilazione?
- 15. Classe Singleton per un oggetto con parametri
- 16. Classe DB-Connections come Singleton in Python
- 17. Classe Singleton contro classe con membro statico
- 18. classe statica e singleton
- 19. Perché un modulo Python si comporta come un singleton?
- 20. diverse istanze di classe singleton
- 21. Ricerca metodo classe nested singleton
- 22. Quanto costa la creazione di una nuova discussione in Java? Quando dovremmo considerare l'utilizzo di un pool di thread?
- 23. Perché utilizzare singleton anziché statico?
- 24. ottenere la connessione db tramite la classe singleton
- 25. classe singleton in Java API
- 26. PHP: Singleton vs statico Classe
- 27. JavaScript 'classe' e problemi Singleton
- 28. che deride una classe singleton
- 29. Perché dovremmo impostare un timestamp quando eseguiamo un codesign?
- 30. Singleton - Perché usare le classi?