Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
Плюсы
контролируемый доступ к единственному экземпляру
Минусы
глобальные объекты могут быть вредны для объектного программирования,
в некоторых случаях приводя к созданию немасштабируемого проекта;
усложняет написание модульных тестов и следование TDD.