I write applications for various platforms, but chiefly OS X and Windows. On both, I've been influenced by recent trends in test-driven development (TDD), SOLID, and so on. Most of this I've found to be great advice. I've found that if I have excellent test coverage, I'm more likely to refactor as needed, because I'm more confident that I'll catch in my tests any side effects of refactoring.
Anyway, all of this leads me to my question: Is a "manager" singleton always a bad idea? I am writing a Cocoa application that must process a large number of QuickTime files in a queue. There can be only one queue in the application, and it must be accessible to multiple parts of the application, so that they can add items to the queue. I've found that the easiest way to do this is with a singleton. Now, I've taken some care to write this singleton in a testable manner, so TDD isn't an issue.
What would I substitute for a singleton in this case? What other design patterns work and can still be unit-tested, if any? (Note that this question should be regarded as language-agnostic. This is a general OO and TDD question.)