Singleton Design Pattern is one of GOF (Gang of Four) design pattern. It comes under creational patterns. The main idea behind the Singleton is, create only one object of a specific class is ever created. There are couple of ways to implement the Singleton design pattern in Java with their own pros and cons. But the easiest way is using Enum in Java.
There are 2 type of initialization
Eager initialization – create an instance when initialize. It might be not required at that moment.
Lazy initialization – create an instance when required.