Разница между классической реализацией синглтона и ленивой инициализацией заключается в том, как создаётся экземпляр класса:
- Классическая реализация предполагает создание экземпляра при инициализации класса. 1 В классе определяется статическая переменная — ссылка на конкретный экземпляр объекта и приватный конструктор. 3 В статическом методе getInstance() этот конструктор вызывается для создания объекта, если он отсутствует и равен null. 3
- Ленивая инициализация создаёт экземпляр только при первом обращении к нему. 46 Это позволяет отложить создание объекта до тех пор, пока он действительно не потребуется. 4 Ленивая инициализация полезна, когда создание объекта класса очень ресурсоёмкое и может тормозить программу, если будет выполняться при запуске. 9