Singleton & Lazy initialization

Singleton
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса можно обращаться через интерфейс, если такая возможность поддерживается языком.

Отложенная (ленивая) инициализация (англ. Lazy initialization).
Приём в программировании, когда некоторая ресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, как будет использован её результат. Таким образом, инициализация выполняется «по требованию», а не заблаговременно. Аналогичная идея находит применение в самых разных областях: например, и логистическая концепция «Точно в срок».

Источник