Mettere il rossetto su un maiale. È così interessante che ho dovuto creare una nuova risposta:
Quindi significa che, per la registrazione ...
- Non puoi creare singoletti sepatati per ogni bersaglio di registrazione, ad esempio logError () - > write, logWarning () - > write, etc (???)
- Non è possibile selezionare il tipo di registro quando si ottiene il log Singleton (TYPE) - > write (???)
- Non puoi semplicemente creare un'altra istanza di classe, quando necessario (puoi avere la stessa classe usando singleton per la registrazione "globale" e quindi puoi creare un'istanza per qualcosa di specifico) (???)
Quindi, a tuo avviso, cosa c'è di meglio che usare i singleton in questo caso?
- Magari passando l'istanza della classe log ad ogni funzione in ogni oggetto di classe
- Magari solo creando la classe di log su richiesta, e vorrà dire che dovrai aprire il blocco / chiudere il file tante volte quante hai righe (molto ottimali :)
- Classe statica ... stesso problema. Le prestazioni faranno schifo ...
- Funzioni globali (bel pasticcio)
- Oggetti globali (di nuovo un bel pasticcio)
I singleton sono una buona pratica di progettazione perché puoi sempre modificare l'oggetto globale da qualche parte, o qualcun altro può semplicemente sovrascriverlo. Non possibile con il modello Singleton.
Cattivo feedback? Da sviluppatori non istruiti? :) Ok, diciamo che se si abusa un pattern lo troverebbero schifo, quindi dovremmo concludere che ogni schema di design fa schifo perché potrebbe essere abusato. E mySQL ha anche una brutta stampa su mongoDB :) Sai la parola "premere" è la chiave. La stampa è alla ricerca di sensazioni e i giornalisti non sanno davvero di cosa parlano.
Funzioni matematiche, chiunque? Math.max () ... bella idea di non creare un oggetto ogni volta che vuoi fare qualche semplice operazione di matematica, giusto? :)
Classe statica: la si utilizza quando non è necessario conservare lo stato o le risorse tra le chiamate di funzione (ad esempio, le funzioni matematiche, ognuna attiva non è correlata alla precedente e non richiede risorse di sistema). Per es. loggando usi singleton, perché vorresti mantenere FileSystem Object Handle per non aprirlo / chiuderlo più e più volte.