Pomimo wielu wątków na ten temat, wciąż nie jestem pewien, kiedy wybrać, które podejście. Mam nadzieję, że omawiając konkretny przykład, w końcu go "zdobędę".Klasa Singleton kontra klasa z elementem statycznym
Uwaga: moim językiem jest tutaj kakao, chociaż ogólny problem nie dotyczy konkretnego języka.
Mam klasy TaskQueue że chcę użyć do:
- dostępu z dowolnego miejsca w kodzie, aby dodać lub usunąć zaplanowane zadania
- procesowe automatycznie zaplanowane zadania w regularnych odstępach
Kiedy po raz pierwszy użyto TaskQueue, chcę, aby TaskQueue zainicjował wątek, który następnie będzie budził się w regularnych odstępach czasu w celu przetworzenia zadań.
Oczywiście będą potrzebne przy co najmniej dwóch czynników:
- tablicę do przechowywania zadania
- wystąpienie gwintu przetwarzania zadań
Ponieważ jest tylko jedna kolejka zadań i jeden wątek do przetwarzania tych zadań, mam dwie możliwości:
Dokonaj TaskQueue singleton klasy (używając na przykład CWL_DECLARE_SINGLETON_FOR_CLASS_WITH_ACCESSOR jak opisano w http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html, który moim zdaniem będzie trzeba zmodyfikować plik CWLSynthesizeSingleton.h aby rozpocząć wątek w Init czasie).
Mają szereg zadań i nici instancja być zarówno statyczne (zgodnie z podejściem zasugerował tutaj: How do I declare class-level properties in Objective-C?)
Czy jest niewątpliwie jednym podejściem, które lepiej niż inne w tym konkretnym przypadku? Jeśli tak, dlaczego?
oszuka: http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern?lq=1 – cregox