Я пишу приложения для различных платформ, но главным образом для OS X и Windows. На то и другое на меня повлияли последние тенденции в разработке через тестирование (TDD), SOLID и так далее. Большую часть этого я нашел отличным советом. Я обнаружил, что если у меня отличное тестовое покрытие, я с большей вероятностью проведу рефакторинг по мере необходимости, потому что я более уверен, что уловлю в своих тестах любые побочные эффекты рефакторинга.
В любом случае, все это приводит меня к моему вопросу: Является ли синглтон "менеджер" всегда плохой идеей? Я пишу приложение Cocoa, которое должно обрабатывать большое количество файлов QuickTime в очереди. В приложении может быть только одна очередь, и она должна быть доступна для нескольких частей приложения, чтобы они могли добавлять элементы в очередь. Я обнаружил, что самый простой способ сделать это с помощью синглтона. Теперь я позаботился о том, чтобы написать этот синглтон в тестируемой форме, поэтому TDD не проблема.
Что бы я заменил синглтоном в этом случае? Какие другие шаблоны проектирования работают и все еще могут быть проверены модулем, если таковые имеются? (Обратите внимание, что этот вопрос следует рассматривать как независимый от языка. Это общий вопрос ОО и TDD.)