单例模式(Singleton)

2018-03-07  本文已影响0人  毕加森
一、初始化单例类时即创建单例
public class Singleton {
  private static Singleton instance = new Singleton();

  private Singleton() {
  }

  public static Singleton getInstance() {
    return instance;
  }
}
public enum Singleton {
  INSTANCE;
}
二、按需、延迟创建单例
public class Singleton {
  private static Singleton instance = null;

  private Singleton() {
  }

  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
public class Singleton {
  private static Singleton instance = null;

  private Singleton() {
  }

  public static synchronized Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
public class Singleton {
  private static Singleton instance = null;

  private Singleton() {
  }

  public static Singleton getInstance() {
    synchronized (Singleton.class) {
      if (instance == null) {
        instance = new Singleton();
      }
    }
    return instance;
  }
}
public class Singleton {
  private static Singleton instance = null;

  private Singleton() {
  }

  public static Singleton getInstance() {
    if (instance == null) {
      synchronized (Singleton.class) {
        if (instance == null) {
          instance = new Singleton();
        }
      }
    }
    return instance;
  }
}
public class Singleton {
  private static class Singleton2 {
    private static Singleton instance = new Singleton();
  }

  private Singleton() {
  }

  public static Singleton getInstance() {
    return Singleton2.instance;
  }
}
单例模式的实现方式对比.png

原文:单例模式(Singleton)- 最易懂的设计模式解析

上一篇 下一篇

猜你喜欢

热点阅读