Singleton Design Pattern Explained ๐Ÿ”„ | LambdaTest

:movie_camera: New Video Alert!

Unlock the secrets of the Singleton Design Pattern with our latest video. Learn how to ensure your class has only one instance and provides a global access point, streamlining your code and enhancing efficiency. Perfect for developers looking to master design patterns.

Watch now and elevate your coding skills! :rocket:

The Singleton pattern is a handy design approach that ensures a class has only one instance and provides a universal point of access to it. This pattern is particularly useful when you need to control access to some shared resourceโ€”like a database or file system.

Hereโ€™s a simple example of how you can implement a Singleton class:

public class Singleton {
    // Holds the single instance of Singleton that will be used across the system
    private static Singleton instance;

    // Private constructor to prevent creating multiple instances
    private Singleton() {
    }

    // Public method to provide a global access point to the instance
    public static Singleton getInstance() {
        // Create the instance if it hasn't been created yet
        if (instance == null) {
            instance = new Singleton();
        }
        // Return the existing instance
        return instance;
    }
}

In this setup, the Singleton class controls instantiation itself and ensures that only one instance of the class is created. This single instance can then be accessed globally within your application, maintaining a consistent state across all points of interaction.

Thread-Safe Singleton Pattern: To ensure thread safety in a Singleton, you can use synchronization in the getInstance method or use the double-checked locking pattern.

public class ThreadSafeSingleton {
    private static ThreadSafeSingleton instance;

    private ThreadSafeSingleton() {
        // Private constructor to prevent instantiation
    }

    public static synchronized ThreadSafeSingleton getInstance() {
        if (instance == null) {
            instance = new ThreadSafeSingleton();
        }
        return instance;
    }
}

Hereโ€™s from my knowledge,

Enum Singleton Pattern: Using an enum is another way to implement a Singleton in Java, as enums guarantee only one instance of each enum constant.

public enum EnumSingleton {
    INSTANCE;

    // Add methods and fields as needed
}