Quale è la differenza dato che esistono tutti "una volta per classe".
Quando dovrei usare uno su un altro, cioè per quale scopo?
Io uso Ruby.
Quale è la differenza dato che esistono tutti "una volta per classe".
Quando dovrei usare uno su un altro, cioè per quale scopo?
Io uso Ruby.
Le differenze sono ben definite e puoi cercarle facilmente. Ecco un breve riassunto (indipendente dalla lingua):
A quale scegliere: il mio consiglio è di evitare il più possibile gli attributi di classe e i singleton. Entrambi sono globalmente mascherati e, anche se potrebbero esserci usi appropriati per loro, la maggior parte delle applicazioni del mondo reale sono in realtà inappropriate, introdotte per "convenienza" a un certo punto e una fonte di importanti mal di testa in seguito. Nella maggior parte delle situazioni, un'alternativa migliore consiste nel creare un tipo regolare per descrivere lo stato che altrimenti inseriresti in un attributo di classe o singleton, e semplicemente passarlo in giro. In questo modo, puoi controllare esattamente chi può modificare lo stato (e chi no), e se dovessi decidere che hai bisogno di più di un'istanza, puoi semplicemente crearne uno. Il problema di trasportare l'oggetto stato attorno è minimo in confronto.
Le costanti di classe, al contrario, vanno bene: sono costanti, quindi non vi è alcun rischio di modifiche inaspettate. Sono solo valori a cui puoi accedere da qualsiasi luogo e non c'è nulla di sbagliato in questo (purché il codice che li usa non si interrompa se cambi il valore).
Leggi altre domande sui tag object-oriented class concepts ruby singleton