📙
Design Pattern
  • Introduction
  • 0. About Design Pattern
  • 1. Singleton
  • 1.1 Eager Singleton (a.k.a Pessimistic Lock Singleton)
  • 1.2 Lazy Singleton (a.k.a Optimistic Lock Singleton)
  • 1.3 理解Singleton
  • 1.4 Cache Singleton
  • 1.5 Extend Singleton
  • 1.6 Double Check and Lock Singleton
  • 1.7 Lazy Initialization Holder Class
  • 1.8 Enum Singleton
  • 1.9 Conclusion
  • 2. Factory
  • 2.1 Simple Factory
  • 2.2 Factory
  • 2.3 Abstract Factory
  • 2.4 Conclusion
Powered by GitBook
On this page

Was this helpful?

1.2 Lazy Singleton (a.k.a Optimistic Lock Singleton)

定義: Lazy Singleton, 有時又稱為樂觀鎖(optimistic lock)單例, 即需要用到時才去檢查是否有實例, 通常此種做法是在第一次存取單例的時候會比較久, 因為第一次存取的時候尚未有任何實例, 所以要先進行初始化, 以下直接以程式說明.

package idv.design.pattern.singleton.lazy;

/**
 * @author Carl Lu
 */
public class Singleton {

    /*
     * This is also called "optimistic lock singleton".
     */

    /*
     * Define a variable for saving instance that will be build.
     */
    private static Singleton uniqueInstance = null;

    /*
     * The constructor should be private so that we can control the instance number.
     */
    private Singleton() {

    }

    /*
     * Need to define a method for providing class instance to clients.
     * To ensure thread-safe, please add keyword synchronized in the method declaration.
     *
     * @return Singleton singleton instance
     */
    public static synchronized Singleton getInstance() {
        if (uniqueInstance == null) {
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }

    public void singletonOperation() {
        System.out.println("Do something here...");
    }

}
Previous1.1 Eager Singleton (a.k.a Pessimistic Lock Singleton)Next1.3 理解Singleton

Last updated 5 years ago

Was this helpful?

原始碼

點我