Назначение: гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

Общая структура решения.

Singleton – одиночка: определяет операцию уровня класса Instance, которая позволяет клиентам получать доступ к единственному экземпляру; может нести ответственность за создание собственного уникального экземпляра.