Nonostante i molti thread su questo argomento, non sono ancora chiaro quando scegliere quale approccio. Spero che discutendo un esempio specifico, alla fine lo "capisco".Classe Singleton contro classe con membro statico
Nota: il mio linguaggio qui è Cocoa sebbene il problema generale non sia specifico della lingua.
Ho un TaskQueue service classe che voglio usare per:
- l'accesso da qualsiasi luogo nel mio codice al fine di aggiungere o rimuovere operazioni pianificate
- elaborare automaticamente le operazioni pianificate a intervalli regolari
Quando TaskQueue viene utilizzato per la prima volta, desidero che TaskQueue avvii un thread che si riavvierà a intervalli regolari per elaborare le attività.
Ovviamente, ho bisogno almeno due variabili:
- un array per memorizzare i compiti
- un'istanza del filo elaborazione delle operazioni
Poiché desidero sola coda di attività e un thread per elaborare queste attività, ho due scelte:
Fare TaskQueue service una classe Singleton (usando per esempio CWL_DECLARE_SINGLETON_FOR_CLASS_WITH_ACCESSOR come descritto in http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html, che credo che dovrò modificare il file CWLSynthesizeSingleton.h per avviare la discussione in fase di init.)
Avere la gamma di compiti e il filo esempio sia essere statico (seguendo l'approccio suggerito qui: How do I declare class-level properties in Objective-C?)
c'è chiaramente un approccio che è meglio che l'altro in questo caso specifico? Se è così, perché?
duped: http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern?lq=1 – cregox